事象
新しいPCになって最初のコミットの際に、コミッタの名前とメールアドレスがPCのユーザ名とホスト名になっていたことに(警告が出ていたのにも関わらず)気付かないまま何度かコミットをしてしまった。
個人利用のリポジトリだがログが残るのが気持ち悪いため、修正する。
名前、メールアドレスの修正
Gitの設定情報を正しい内容に修正する。
$ git config --global --edit
viが起動するため、以下のように追記してesc
+ :wq
# This is Git's per-user configuration file.
[user]
# Please adapt and uncomment the following lines:
# name = XX YY
# email = xxyy@xxyy.local
name=mamfrog <-- 追記
email=mamfrog@dummy.jp <-- 追記
コミットを修正
修正したいコミットが何個前のコミットなのかをログで確認する。
$ git log
二つ前のコミットを修正する場合、以下を実行する。
(三つ前ならHEAD~3
となる。コミットIDを直接指定してもOK)
$ git rebase -i HEAD~2
※この時error: cannot rebase: You have unstaged changes.
といったエラーが発生した場合、コミットしていない変更があるため、コミットまたはスタッシュしておく。
viが起動するため、対象のコミットの先頭のpick
をedit
と書き換えてesc
+ :wq
pick 9cbd3f9 二つ前のコミットメッセージ
pick 7d136e8 一つ前のコミットメッセージ
# Rebase fedede1..7d136e8 onto fedede1 (2 commands)
(以下略)
対象のコミットがチェックアウトされた状態になるため、コミッタの修正コミットを行う。
$ git commit --amend --reset-author
修正が終わったので、リベース完了する。
$ git rebase --continue
再度git log
してコミッタが修正されたことを確認。
補足
一つ前のコミットだけを修正する場合はリベース不要。
Gitの設定情報を修正後、以下を実行すればOK。
$ git commit --amend --reset-author