XGitHub

Git履歴のメールアドレスを変更する方法

Published Icon
2026-03-04
Tag Icon

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
favicongithub.com
ogp

要件

今回はuvというツールを使用するため、インストールされていない場合は、以下のサイトを確認しインストールしてください。

Installation | uvuv is an extremely fast Python package and project manager, written in Rust.
favicondocs.astral.sh
ogp

変更

この方法で履歴を変更すると元に戻すことはできません。 実行前にバックアップを取るようにしてください。

  1. メールアドレスの確認

以下コマンドで全履歴の中のメールアドレスを確認します。

git log --all --format='%an <%ae>' | sort -u
  1. mailmap作成

mailmap.txtを作成し、上書きするメールアドレスと名前を記述します。

mailmap.txt
New Name <new@example.com> Old Name <old@example.com>
  1. filter-repo実行
uvx git-filter-repo --mailmap mailmap.txt

おそらく上記コマンドではエラーになるため、--forceオプションを付けると変更されます。

uvx git-filter-repo --mailmap mailmap.txt --force
  1. 確認

再度以下のコマンドを実行し、メールアドレスが変更されていれば成功です。

git log --all --format='%an <%ae>' | sort -u

GitHubへプッシュ

履歴を書き換えた後は、コミットIDがすべて変わるため、通常のgit pushは使用できません。 そのため--forceを使った強制プッシュが必要になります。

  1. リモート反映

履歴を書き換えた場合は、削除されています。

確認:

git remote -v

そのためリモートを追加します。

git remote add origin xxxxx
  1. 強制プッシュ

WARNING

履歴が完全に書き換わるため、共同開発者がいる場合は注意してください。

git push origin --force --all

タグも更新する場合:

git push origin --force --tags