Gitで自分のcommitのAuthorとCommitterを一括で変更したい
Table of Contents
Gitで自分のcommitの名前・メールアドレスのみを一括で変更する方法。割とよく使うのでメモ。
想定シナリオ
- 複数アカウントを使い分けていて誤ったアカウントでcommitしてしまったり、公開したくないメールアドレスでcommitしてしまったとき、履歴をまとめて改変したい。
- 複数人でcommitしているので自分のcommitに限って変更したい。
解決方法
事前に設定したメアド(OLD_EMAIL
)に合致するcommitの下記情報を書き換える。
- Author Name
- Committer Name
- Author Email
- Commiter Email
(参考)authorとcommitterのちがい
- author: オリジナルのコードを書いた人
- committer: 最後にそのcommitに変更を加えた人
git log
したときに出てくる名前は前者のAuthor Name
実行するコマンド
git filter-branch -f --env-filter '
OLD_EMAIL="{変更したいメアド}"
NEW_NAME="{変更後の名前}"
NEW_EMAIL="{変更後のメアド}"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$NEW_NAME"
export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$NEW_NAME"
export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
fi
'
おわりに
リモートにpush済みのcommitに変更を加えた場合、当然ながらforce pushが必要。
リモート反映前に行うか、force pushが必要ならチームメンバに確認をとりましょう。
Read other posts