From: Matej Dujava Date: Sun, 16 Nov 2025 22:12:43 GMT Subject: Re: [PATCH] commit: add --committer option Message-ID: In-Reply-To: On Wed, Nov 12, 2025 at 11:58:02PM +0800, ZheNing Hu wrote: >Phillip Wood 于2025年11月11日周二 22:38写道: >> >> On 11/11/2025 13:01, ZheNing Hu wrote: >> > Phillip Wood 于2025年11月11日周二 00:50写道: >> >> On 09/11/2025 10:22, ZheNing Hu via GitGitGadget wrote: >> >>> From: ZheNing Hu >> >>> >> >>> >> >>> This patch introduces the --committer option to git-commit, providing: >> >>> >> >>> 1. Consistency with the existing --author option >> >>> 2. A more convenient alternative to environment variables >> >>> 3. Better support for automated workflows and scripts >> >>> 4. Improved user experience when managing multiple identities >> >> >> >> What's the use case for the same person committing under different >> >> identities? We already have a config mechanism to set different >> >> identities for different repositories but I'm struggling to see why >> >> someone would want to create commits under multiple identities in a >> >> single repository. For scripts it easy enough to set the relevant >> >> environment variables if a tool wants to create commits under its own >> >> identity. >> >> >> > >> > I frequently need to distinguish between different user.name and user.email >> > configurations on our company's internal GitHub. >> > >> > The current problems are: >> > >> > When I misconfigure (which happens occasionally), git commit --author only fixes >> > the author part, I still need to additionally set GIT_COMMITTER_NAME and >> > GIT_COMMITTER_EMAIL environment variables to fix the committer information >> > These environment variables are painful to use, requiring manual setup >> > every time >> >> I'm afraid I don't quite follow. If you are amending existing commits to >> fix them up after you have corrected your configuration then they will >> have the correct committer automatically when you run "git commit >> --amend --author=..." to correct the author. If you are committing >> before you have realized that user.{name,email} are misconfigured then I >> don't see how "--committer" helps because you have not yet realized >> anything is wrong. >> > Hi 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 = ... ``` >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. > >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, 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. > >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. > >> Thanks >> >> Phillip >> > >Thanks > >ZheNing Hu > -- Thanks, Matej