過去の Git コミットのコミッタを変更するには

ある Git リポジトリを git clone して、黙々と作業を進めていたのだが、途中でコミッタを間違えていることに気付いた。この Git リポジトリで使うべき user.nameuser.email を指定し忘れたまま、異なるユーザでコミットしてしまっていた。

今回はたまたま作ったばかりの Git リポジトリなので、以下の記事にあったコマンドを利用して一括修正できた。

git filter-branch -f --env-filter \
  "GIT_AUTHOR_NAME='new'; \
   GIT_AUTHOR_EMAIL='new@example.com'; \
   GIT_COMMITTER_NAME='new'; \
   GIT_COMMITTER_EMAIL='new@example.com';" \
  HEAD

'new' 部分をコミッタの user.name'new@example' 部分を user.email に変更すれば良い。

変更後、git log --pretty=full などで確認して、コミッタが変わっていれば OK。


なお、この状態で tig --all すると、修正前のコミッタの名前でのコミットログが見えたりするが、心配無用。どうやら .git/ ディレクトリ内にローカルのデータが残ってるだけみたいなので、git push --force したリポジトリを新たに git clone し直してみれば、ちゃんと消せていることが分かる。