Git の commit author を変更する
TL;DR
-
git config
で設定する内容は意外と大事 - 間違えたらこんな感じで直していく
- GitHub 上の history はちょっと変な感じになっちゃう、仕方ない
はじめに
GitHub を使うときには (?) なのかどうかわかりませんがとりあえず user.name
と user.email
の設定を求められますよね。
で、その user.email
の設定を間違えたまま、いくつか commit を積んでしまい、あとから直しました、というメモです。
直していく
事前作業として、GitHub を見て、変更すべき commit (commit id) を調べておきます。
こちらも参考になるかなと思います。
git rebase
まず、git rebase -i HEAD~20
として過去の commit を表示させます。
上の記事では該当の commit を消したかったのですが、今回は消さずに author のみを変更するため、該当の commit の pick
を edit
に変更します。
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 --amend
と git 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?
- GitHub に push しちゃった commit を取り消す
Discussion