Bescottee苦しいときは伸びてるとき、楽なときは伸びていないとき

2 間違った名前、メールアドレスでのcommitの修正方法

admin to git  

複数の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が変更できました。

コメントをどうぞ