状況
GitHubにリポジトリを公開するにあたって、これまで~/.git/configで指定していたuser.nameとuser.emailが使えなくなりました。
今後はプロジェクト内に.git/configを作成することで対応できますが、これまでのコミットのAuthorとCommitterをすべて書き換える必要が出てきました。
filter-branchコマンドで一括変更する
以下のコマンドで過去のコミットのAuthorとCommitter情報を書き換えます。
注意:
filter-branchは過去のコミットを書き換えてしまうので、作業前にリポジトリのバックアップをとっておくことを推奨します!
$ git filter-branch --env-filter "GIT_AUTHOR_NAME='NewAuthor';GIT_COMMITTER_NAME='NewCommitter';GIT_AUTHOR_EMAIL='newauthor@example.com';GIT_COMMITTER_EMAIL='newcommitter@example.com'" --all
git log --pretty=fullerで確認します。
$ git log --pretty=fuller
commit e8c720d29450ba08fe686220dbcee09363911e5f (HEAD -> master)
Author: NewAuthor <newauthor28@example.com>
AuthorDate: Sun Aug 9 10:49:13 2022 +0900
Commit: NewCommitter <newcommitter@example.com>
CommitDate: Sat Aug 20 10:43:04 2022 +0900
(省略)
これで完了です!
補足: AuthorとCommitterの違いについて
今回git filter-branchコマンドについて調べているときに気になったのが、AuthorとCommitterの違いです。
Stack Overflowの回答によると
- Author: オリジナルのコードを書いた人
- Committer: Authorの作業を適用(コミット)した人
とのことです。