🗂
過去のコミットまで遡ってauthorの情報を変更する
概要
今までGitのauthorに本名を設定していたが、セキュリティ的な観点で変更したくなった。git-filter-repoというツールを使うと、過去のコミットまで遡って簡単にauthorの情報を変更することができたので備忘録。
手順
1. authorを変更する(必要なら)
過去のコミットのauthorだけではなく、将来のコミットのauthorの情報も変更したいなら以下を実行する。
git config --global user.name "new_name"
git config --global user.email "new_email"
1. git-filter-repoをインストールする
自分はpipでインストールしたが、Homebrewなどでも可能らしい。
pip3 install git-filter-repo
brew install git-filter-repo
2. リモートリポジトリの設定をメモしておく
git-filter-repoを使うとなぜかリモートリポジトリの設定が消えてしまうので、実行前に設定をメモしておく。
git remote -v
3. authorの情報を変更する
以下のコマンドを実行することで、過去のコミットまで遡ってauthorの情報を変更できる。
old_name
とnew_name
、old_email
とnew_email
を適宜変更する。
# 名前の変更
git-filter-repo --force --name-callback 'return name.replace(b"old_name", b"new_name")'
# メールアドレスの変更
git-filter-repo --force --email-callback 'return email.replace(b"old_email", b"new_email")'
4. authorが変更されたかを確認する
git log
5. リモートリポジトリを再設定する
先ほどメモしたリモートリポジトリの設定を再設定する。
git remote add origin (リモートリポジトリのURL)
6. リモートリポジトリにpushする
git push origin --force --all
--force
で強制的にpush、--all
で全てのブランチをpushする。
Discussion