From: Phillip Wood Date: Mon, 17 Nov 2025 14:27:13 GMT Subject: Re: [PATCH] commit: add --committer option Message-ID: <10ad6161-8d9d-4e07-ab62-105adac2220d@gmail.com> In-Reply-To: On 16/11/2025 22:12, Matej Dujava wrote: > On Wed, Nov 12, 2025 at 11:58:02PM +0800, ZheNing Hu wrote: >> Phillip Wood 于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. >> 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. >> 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 >> ``` > > 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. > but using: > >   git rebase -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. >> >> 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