LoginSignup
3
1

More than 1 year has passed since last update.

Gitで過去すべてのコミットのAuthorとCommitterを書き換える

Last updated at Posted at 2022-08-30

状況

GitHubにリポジトリを公開するにあたって、これまで~/.git/configで指定していたuser.nameuser.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の作業を適用(コミット)した人

とのことです。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1