🗂

過去のコミットまで遡ってauthorの情報を変更する

に公開

概要

今までGitのauthorに本名を設定していたが、セキュリティ的な観点で変更したくなった。git-filter-repoというツールを使うと、過去のコミットまで遡って簡単にauthorの情報を変更することができたので備忘録。

https://github.com/newren/git-filter-repo

手順

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_namenew_nameold_emailnew_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する。

GitHubで編集を提案

Discussion