Gitコミットの作成者を修正する
コミットでメールアドレスを間違えてしまうことは、けっこうよくあります。用途によって使い分けたいメールアドレスがいくつかあるので、正しく設定できていることが大切です :)
直前のコミットの作成者を修正する
これは簡単です!
git commit --amend --author="Example Name <[email protected]>"インタラクティブリベースを使う
- 好きなベースを指定して
git rebase -iを実行します - 変更したいコミットを
pickではなくeditにします git commit --amend --author="Example Name <[email protected]>"を実行し、その後git rebase --continueを実行します
filter-branchを使う
全部まとめて書き換えられます! ただし、filter-branchは扱いを誤るといろいろ壊してしまうので、注意してください
git filter-branch -f --commit-filter '
if [ "$GIT_AUTHOR_EMAIL" = "[email protected]" ];
then
GIT_AUTHOR_NAME="New Name";
GIT_AUTHOR_EMAIL="[email protected]";
git commit-tree "$@";
else
git commit-tree "$@";
fi' HEADfilter-repoを使う
git-filter-repoについては、以前Gitリポジトリを分割するで初めて紹介しましたが、ここでも便利です。filter-branchよりもこちらがおすすめです。ただし、標準のGitインストールには含まれていません。
次のコマンドでインストールします。
curl "https://raw.githubusercontent.com/newren/git-filter-repo/main/git-filter-repo" -o ~/.local/bin/git-filter-pathその後、次のどちらかを実行します。
mailmapを使う場合
mailmapで old -> new の対応付けを設定しておけば、次を実行できます。
git filter-repo --use-mailmapmailmapを使わない場合
そうでなければ、次の方法がうまく機能します。
git filter-repo --email-callback '
return email if email != b"[email protected]" else b"[email protected]"
'記事をランダムに読む