過去のgitコミットのCommitとAuthor情報を修正する

gitのコミット情報がおかしい

git logして履歴みてたりGitHubにpushしたコードをブラウザで眺めたりしてたらサムネイルが出てなかったりメールアドレスがおかしかったりコミッター名が違ってたりしてアレってなったとき。気持ち悪いので修正したい!

修正

.gitconfigをなおす

とりあえず設定みる

$  git config --global --list

localにgitconfigあってそこでユーザー名指定してるなら --local

おかしかったら直す

$ git config --global user.name watashinoname
$ git config --global user.email hoge@example.com

これでグローバルの.gitconfigのユーザー情報がなおった

過去コミットを改変してコミットも直す

こちらのブログが非常に参考になった。

あとStackOverFlow

$ git rebase -i <コミットハッシュ>

エディタ立ち上がるので、該当のコミッター情報がおかしいコミットをeditに変えてエディタ閉じる。ターミナルに戻るので

$ git commit --amend --reset-author

そして

$ git rebase --continue

複数コミットが該当しててeditするならまた

$ git commit --amend --reset-author
$ git rebase --continue

を繰り返す。

問題なくrebaseできたらgit logでコミットみて、直っていればOK。

すでにプッシュ済みだったなら改変してるのでgit push -fでforce pushする必要がある。


コミット情報おかしいの気づかないままずっとやってて、とある瞬間にふと気づいた場合

めっちゃコミットあるので上のやりかたでチマチマrebaseしてamendして繰り返すのは非現実的。でも下記参照ブログのように git filter-branch --commit-filterを使って一括置換する方法があるらしい。

sohtaro.com

qiita.com

今回は自分はすぐおかしいことに気づいたから最初のrebase -i--amend --reset-author戦法でやったけど、もし気づくのが遅くて大量のコミットがある場合はこっちのやりかたのほうがよさそう。