Git履歴のメールアドレスを変更する方法
2026-03-04
Git 履歴を書き換える方法
git に設定しているメールアドレスを実際に使用しているもののまま GitHub 上で公開すると、そのメールアドレスが他のユーザーから閲覧できてしまいます。これを避けるために、GitHub が各ユーザー向けに用意している 公開専用メールアドレス に変更して利用します。
以下のgit-filter-repoを使って変更します。
GitHub - newren/git-filter-repo: Quickly rewrite git repository history (filter-branch replacement)Quickly rewrite git repository history (filter-branch replacement) - newren/git-filter-repo
github.com
要件
今回はuvというツールを使用するため、インストールされていない場合は、以下のサイトを確認しインストールしてください。
Installation | uvuv is an extremely fast Python package and project manager, written in Rust.
docs.astral.sh
変更
この方法で履歴を変更すると元に戻すことはできません。 実行前にバックアップを取るようにしてください。
- メールアドレスの確認
以下コマンドで全履歴の中のメールアドレスを確認します。
git log --all --format='%an <%ae>' | sort -u- mailmap作成
mailmap.txtを作成し、上書きするメールアドレスと名前を記述します。
New Name <new@example.com> Old Name <old@example.com>- filter-repo実行
uvx git-filter-repo --mailmap mailmap.txtおそらく上記コマンドではエラーになるため、--forceオプションを付けると変更されます。
uvx git-filter-repo --mailmap mailmap.txt --force- 確認
再度以下のコマンドを実行し、メールアドレスが変更されていれば成功です。
git log --all --format='%an <%ae>' | sort -uGitHubへプッシュ
履歴を書き換えた後は、コミットIDがすべて変わるため、通常のgit pushは使用できません。
そのため--forceを使った強制プッシュが必要になります。
- リモート反映
履歴を書き換えた場合は、削除されています。
確認:
git remote -vそのためリモートを追加します。
git remote add origin xxxxx- 強制プッシュ
WARNING
履歴が完全に書き換わるため、共同開発者がいる場合は注意してください。
git push origin --force --allタグも更新する場合:
git push origin --force --tags