Gitでソース管理をしていますが、GitHub以外のリポジトリでもGitを使っている場合、ユーザー情報が異なる場合があります。
いろんな開発をしてると、流れでそのままコミットしてしまうので、意図しないユーザー情報でコミットしてしまうことがあります。
そんなときのユーザー情報の変更のやり方をまとめました。
古いやり方(filter-branch)
やり方を調べて、以下のコマンドを実行すると、警告文が表示されました。
git filter-branch --commit-filter ' if [ "$GIT_COMMITTER_EMAIL" = "xxx@users.noreply.github.com" ]; then GIT_COMMITTER_EMAIL="xxx@gmail.com"; GIT_AUTHOR_EMAIL="xxx@gmail.com"; git commit-tree "$@"; else git commit-tree "$@"; fi' HEAD WARNING: git-filter-branch has a glut of gotchas generating mangled history rewrites. Hit Ctrl-C before proceeding to abort, then use an alternative filtering tool such as 'git filter-repo' (https://github.com/newren/git-filter-repo/) instead. See the filter-branch manual page for more details; to squelch this warning, set FILTER_BRANCH_SQUELCH_WARNING=1.
filter-branch
は壊れた履歴を生成する可能性があるため、filter-repo
を使ってくれとのこと。
新しいやり方(filter-repo)
新しいやり方は、filter-branch
とは異なり少し事前準備が必要です。
1.名前と変更前後のメールアドレスを記載したファイルを作成する
ファイル名は何でも良いです。
中身は以下の形式で作成して下さい。
名前 <新しいメールアドレス> <古いアドレス(変更したいもの)> 例1:名前にブランクを含まない yamada <xxx@gmail.com> <xxx@users.noreply.github.com> 例2:名前にブランクを含む(名前を""で括る) "yamada taro" <xxx@gmail.com> <xxx@users.noreply.github.com>
2.filter-repo
を実行します
git filter-repo -f --mailmap email.txt
3.ログで変更されているか確認する
4.pushする