stylesheet

2017-05-20

gitで履歴のCommitterとAuthorを一括変更

複数アカウントでいろんなプロジェクトを梯子してると、ずっと他プロジェクト用の名前でコミットしてしまっていたり...。よくあるのでメモ。

履歴のAuthorとCommitterを変更

filter-branch --env-filterを使用して、GIT_AUTHOR_NAMEold_nameのコミット履歴をすべて変更する。
push済みの場合は、git push -fが必要。

$ git filter-branch -f --env-filter "
if [ ${GIT_AUTHOR_NAME}='old_name' ]; then
  export GIT_AUTHOR_NAME='new_name'
  export GIT_AUTHOR_EMAIL='new_addr@example.com'
  export GIT_COMMITTER_NAME='new_name'
  export GIT_COMMITTER_EMAIL='new_addr@example.com'
fi
"

ローカルレポジトリへ名前とメールアドレスを設定

忘れない内にローカルへ名前とメールアドレスを設定しておく。

$ git config --local user.name new_name
$ git config --local user.email new_addr@example.com

もしくは、直接編集。

$ vi .git/config

[user]
name = new_name
email = new_addr@example.com