From: ZheNing Hu Date: Mon, 17 Nov 2025 15:18:14 GMT Subject: Re: [PATCH] commit: add --committer option Message-ID: In-Reply-To: <10ad6161-8d9d-4e07-ab62-105adac2220d@gmail.com> Phillip Wood 于2025年11月17日周一 22:27写道: > > 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. > Well, if the `git rebase --fx` approach is simple enough, I can also give up on introducing `--committer`. > Thanks > > Phillip >