2026年9月11日金曜日

コミットの author と committer をすべて指定したユーザで書き換える方法

コミットの author と committer をすべて指定したユーザで書き換える方法

概要

.git/config などを設定して無くグローバルの user,email を使ってしまっていた場合に全件 author と committer を書き換えたい場合があるかなと思います
その方法を紹介します

環境

  • macOS 26.6.2
  • git 2.55.0

書き換え

NEW_NAME="your_user_name"
NEW_EMAIL="your_user_email@local"

git stash push -u -m 'temp-before-identity-rewrite' && \
FILTER_BRANCH_SQUELCH_WARNING=1 git filter-branch --force --env-filter "
GIT_AUTHOR_NAME=\"$NEW_NAME\"
GIT_AUTHOR_EMAIL=\"$NEW_EMAIL\"
GIT_COMMITTER_NAME=\"$NEW_NAME\"
GIT_COMMITTER_EMAIL=\"$NEW_EMAIL\"
export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL
" master && \
git stash pop

確認

0 になれば OK です

git log master --format='%an%x09%ae%x09%cn%x09%ce' |
awk -F '\t' -v new_name="$NEW_NAME" -v new_email="$NEW_EMAIL" \
  '$1 != new_name || $2 != new_email || $3 != new_name || $4 != new_email { count++ }
   END { print count+0 }'

強制上書き

git push -f origin master

後処理

git update-ref -d refs/original/refs/heads/master

最後に

ちゃんと最初に .git/config は書いておきましょう

0 件のコメント:

コメントを投稿