コミットの範囲の作成者を変更するにはどうすればよいですか?
ベストアンサー1
注意: この回答は SHA1 を変更するため、すでにプッシュされているブランチで使用する場合は注意してください。名前のスペルを修正したり、古いメールを更新したりしたいだけの場合は、Git を使用すると、履歴を書き換えずにこれを実行できます.mailmap
。私の他の答え。
リベースを使用する
まず、まだ行っていない場合は、git-config で名前を修正する必要があります。
git config --global user.name "New Author Name"
git config --global user.email "<[email protected]>"
これはオプションですが、必要であればコミッター名もリセットされます。
リベースを使用してコミットの範囲のメタデータを書き換えるには、次のようにします。
git rebase -r <some commit before all of your bad commits> \
--exec 'git commit --amend --no-edit --reset-author'
--exec
git commit
各コミットが書き換えられるたびにステップが実行されます(git commit && git rebase --continue
繰り返し実行した場合と同様)。
--root
最初のコミット (「ルート」コミットとも呼ばれます) も変更する場合は、リベース呼び出しに追加する必要があります。
user.name
これにより、 /構成のコミッターと作成者の両方が変更されますuser.email
。その構成を変更したくない場合は、の代わりにを使用できます。これを行うと、コミッターは更新されず、作成者のみ更新されることに注意してください。--author "New Author Name <[email protected]>"
--reset-author
単一コミット
最新のコミットを変更するだけであれば、リベースは必要ありません。コミットを修正するだけです。
git commit --amend --no-edit --reset-author
プロジェクトの全履歴
git rebase -r --root --exec "git commit --amend --no-edit --reset-author"
古い Git クライアントの場合 (2020 年 7 月以前)
-r,--rebase-merges
が存在しない可能性があります。代わりに を使用できます-p
。 には-p
重大な問題があり、現在は非推奨となっていることに注意してください。