👏

Git の commit author を変更する

2024/01/20に公開

TL;DR

  • git config で設定する内容は意外と大事
  • 間違えたらこんな感じで直していく
  • GitHub 上の history はちょっと変な感じになっちゃう、仕方ない

はじめに

GitHub を使うときには (?) なのかどうかわかりませんがとりあえず user.nameuser.email の設定を求められますよね。
で、その user.email の設定を間違えたまま、いくつか commit を積んでしまい、あとから直しました、というメモです。

直していく

事前作業として、GitHub を見て、変更すべき commit (commit id) を調べておきます。

こちらも参考になるかなと思います。
https://zenn.dev/sakemi/articles/github-delete-commit

git rebase

まず、git rebase -i HEAD~20 として過去の commit を表示させます。
上の記事では該当の commit を消したかったのですが、今回は消さずに author のみを変更するため、該当の commit の pickedit に変更します。

git commit --amend

とすると、該当の commit がされた時点までいったん戻るので、git commit --amend --author="Kazuyuki Sakemi <hoge@example.com>" --no-edit などと叩きます。
これにより、該当の commit の author のみが変更されます。
--no-edit がついているので、それ以外の内容は変更されないんでしょう、たぶん。

git rebase --continue

んで、次に git rebase --continue を実行します。

git commit --amendgit rebase --continue を繰り返す

そうするとまた次に edit に指定した commit になるので、また git commit --amend ... を実行します。
で、git rebase --continue を実行します。

最後に git push --force

2 つのコマンドを繰り返して、最終的にもう全部変更が終わったな、となったら危険が危ないコマンド git push --force を実行します。

これにより、GitHub に push した commit の author が変更されます。
気を付けるポイントとしては、該当の commit をすべてやり直すことになるので、GitHub 上の history では一瞬でものすごい量の commit をした💪💪💪ように見えます。

参考

  • How can I change the commit author for a single commit?

https://stackoverflow.com/questions/3042437/how-can-i-change-the-commit-author-for-a-single-commit

  • GitHub に push しちゃった commit を取り消す

https://zenn.dev/sakemi/articles/github-delete-commit

Discussion