複数のgit repositoryを利用していると、間違った名前、メールアドレスでcommitしてしまい、logに残ってします場合がよくあります。
その場合の修正方法は以下になります。
以下のHEADの~は必要な数つけてください。今回は2つのコミットを修正します。
git rebase -i HEAD~~
以下のように rebase を対話型でエディタが開きます。
pick aa4455b Cosmetic change pick bb7788d Code golf # Rebase cc1122d..dd3344fe onto ee5566f # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = Run a shell command , and stop if it fails # # If you remove a line here THAT COMMIT WILL BE LOST. # However, if you remove everything, the rebase will be aborted. #
名前、メールアドレスを変更したいコミットに対して、edit or e を行頭に入力します。下から最新のコミットです。logの表示時とコミットの表示順序が異なるので注意してください。eはeditの省略表記です。
edit aa4455b Cosmetic change e bb7788d Code golf # Rebase cc1122d..dd3344fe onto ee5566f # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x , exec = Run a shell command , and stop if it fails # # If you remove a line here THAT COMMIT WILL BE LOST. # However, if you remove everything, the rebase will be aborted. #
まず、最初のコミット(aa4455b)のコミットメッセージは変更あえずに author だけを変更します。以下のように amend オプションと author オプションを利用します。
git commit --amend --author="user.name <user.name@domain.com>"
最初のコミット(aa4455b)の修正が完了したことを rebase に通知します。
git rebase --continue
2つめのコミットに対しても、authorを変更します。
git commit --amend --author="user.name <user.name@domain.com>"
2つめのコミットに対して、修正を完了したことを通知します。
git rebase --continue
これで2つのコミットのauthorが変更できました。