Re: [PATCH] commit: add --committer option
- From
ZheNing Hu <adlternative@gmail.com>
- Date
- Nov 17, 2025, 15:18 UTC
- Message-ID
- <CAOLTT8QF9JhA-EXbgnZ30m=+T_DP+t+qbJPc1e5WmZaJhy9kvw@mail.gmail.com>
- In-Reply-To
- <10ad6161-8d9d-4e07-ab62-105adac2220d@gmail.com>
Phillip Wood <phillip.wood123@gmail.com> 于2025年11月17日周一 22:27写道:
Show 84 quoted lines
>
> On 16/11/2025 22:12, Matej Dujava wrote:
> > 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.
>
> >> 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 <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.
>
> > 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.
> >>
> >> 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 >