Re: [PATCH] commit: add --committer option
- From
- Phillip Wood <phillip.wood123@gmail.com>
- Date
- Nov 17, 2025, 14:27 UTC
- Message-ID
- <10ad6161-8d9d-4e07-ab62-105adac2220d@gmail.com>
- In-Reply-To
- <aRpMW-g_rt4jStnu@kocurkovo.cz>
On 16/11/2025 22:12, Matej Dujava wrote:
Show 23 quoted lines
> On Wed, Nov 12, 2025 at 11:58:02PM +0800, ZheNing Hu wrote: >> Phillip Wood <phillip.wood123@gmail.com> 于2025年11月11日周二 22:38写道: > > I use includeIf pattern in a config to separate identities > > ~/.gitconfig: > ``` > [includeIf "gitdir:~/.local/src/personal/"] > path ~/.gitconfig-personal > [includeIf "gitdir:~/.local/src/companyA/"] > path ~/.gitconfig-companyA > [includeIf "gitdir:~/.local/src/companyB/"] > path ~/.gitconfig-companyB > ``` > > then each > ~/.gitconfig-IDENTITY: > ``` > [user] > name = ... > email = ... > signingkey = ... > ```
I think that's a common pattern, so long as one can arrange the directory structure so that the repositories for each identity are under a different sub-directory it works well.
Show 10 quoted lines
>> You're right that after realizing the misconfiguration and correcting the >> repository's user.name and user.email, running `git commit --amend` will >> fix the committer information, but the author remains unchanged. Users >> then need an additional `git commit --amend --author=...` to fix the >> author, >> which does work but requires an extra step. > > For just one commit, after you fix identity (update .git/config or move > project so includeIf uses correct config) then `git commit --amend > --reset-author` should get right identity for both commiter and author.
As you note below it also resets the author date which might to be desirable.
Show 11 quoted lines
>> I see your point that this becomes more cumbersome when dealing with >> multiple commits. In such cases, users currently need to use something >> like: >> >> ``` >> GIT_AUTHOR_NAME="..." GIT_AUTHOR_EMAIL="..." \ >> GIT_COMMITTER_NAME="..." GIT_COMMITTER_EMAIL="..." \ >> git rebase -f <target> >> ``` > > In my test ^ (using 2.51.2) did not set specified AUTHOR identity
Indeed, rebase sets GIT_AUTHOR_{NAME,EMAIL,DATE} when running "git commit" to preserve the authorship of the commit being picked so any value that is set in the environment when running "git rebase" is ignored.
Show 8 quoted lines
> but using: > > git rebase <target> -fx "git commit --amend --no-edit --reset-author" > > is close to rewriting commits with new identity, but this will change > both dates (committer, author). > If --reset-author is not used but either GIT_AUTHOR_* are exported or > --author '...' is used in a -x arg, then author date is kept untouched.
Yes "git rebase -x 'git commit --author=... --amend --no-edit'" is probably the easiest way to reset the author and committer.
Show 10 quoted lines
>> >> This is indeed tedious and error-prone, especially when you want >> to quickly fix and push commits to the platform. >> >> `git commit --amend --author --committer` or a new `git rebase >> --author --committer` >> would provide a more user-friendly workflow for correcting identity >> information after misconfiguration, eliminating the need to manually >> set multiple >> environment variables or run multiple commands.
I'm still not sure why we need a "--committer" option when the committer identity is taken from the corrected config anyway.
Thanks
Phillip