過去の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
を使って一括置換する方法があるらしい。
今回は自分はすぐおかしいことに気づいたから最初のrebase -i
と--amend --reset-author
戦法でやったけど、もし気づくのが遅くて大量のコミットがある場合はこっちのやりかたのほうがよさそう。