状況
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の作業を適用(コミット)した人
とのことです。