Amending the author of a Git commit

Ellie Huxtable

Gitコミットの作者を修正する

原文は Ellie Huxtable により に公開されました。 このブログを購読する

コミット時にうっかり間違ったメールアドレスを使ってしまうことはよくある。用途ごとに使い分けているメールアドレスがいくつかあるので、正しく設定しておくことが大事だ :)

直前のコミットの作者を修正する

これは簡単で手軽だ!

git commit --amend --author="Example Name <[email protected]>"

インタラクティブリベースを使う

  1. 任意のベースに対してgit rebase -iを実行する
  2. 変更したいコミットをpickではなくeditでマークする
  3. 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' HEAD

filter-repoを使う

git-filter-repoについては以前split git repoで紹介したが、ここでも役立つ。filter-branchよりおすすめだが、Gitの標準インストールには含まれていない。

以下のコマンドでインストールする

curl "https://raw.githubusercontent.com/newren/git-filter-repo/main/git-filter-repo" -o ~/.local/bin/git-filter-path

その後、以下のいずれかを実行する

mailmapを使う場合

mailmapで古いアドレスから新しいアドレスへのマッピングを設定済みなら、以下を実行すればいい

git filter-repo --use-mailmap

mailmapを使わない場合

そうでない場合は、以下がうまくいく

git filter-repo --email-callback '
    return email if email != b"[email protected]" else b"[email protected]"
    '

この記事は「muse-spark-1.2-contributor」を使用して翻訳されました。

コメント