
現在VPS+VSCode+RemoteSSHで作業をしているのですが、複数のGitHubアカウントを利用しているため、先日初めて本来使うべきでないGitHubアカウントでコミットをしてしまいました。
Pull Request後に気が付き、なんとか履歴からユーザーを変更できないかとClaudeさんに相談したところ「git-filter-repo」を使うと良いと教えてもらえました。
git-filter-repoをインストール
# まず初めにPython3とpipをインストール
sudo apt update
sudo apt install python3 python3-pip
# git-filter-repoをインストール
pip3 install git-filter-repo
# git-filter-repoをPATHに追加する
# (インストール後に「.local/bin」にインストールされたという警告が出た場合)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
ローカルリポジトリ履歴の書き換え
git filter-repo --commit-callback "
if commit.committer_name == b'間違えたアカウント':
commit.committer_name = b'正しいアカウント'
commit.committer_email = b'正しいアカウントのメールアドレス'
commit.author_name = b'正しいアカウント'
commit.author_email = b'正しいアカウントのメールアドレス'
" --force
Gitのcommitterとauthorについて
ちなみにGitでは、committerとauthorはちゃんと使い分けています。
Author(作者):
- コードを実際に書いた人
- 「誰がこのコードを書いたのか」を示す
- パッチや機能を最初に作成した人物
Committer(コミッター):
- 実際にそのコードをリポジトリにコミットした人
- コードをレビューして受け入れた人や、他人のパッチを適用した人など
- GitHubでPull Requestをマージした場合、あなたが作者ではなくてもコミッターになる
リモートリポジトリの書き換え
git-filter-repoは、フィルタリング後に誤ってリモートリポジトリを上書きしないために自動的にorigin
リモートを削除します。そこでもう一度リモートリポジトリのセットアップをしてから強制pushします。
#新しいリモートを追加
git remote add origin git@github.com:ユーザー名/レポジトリ名.git
git push --force origin <<書き換えたいブランチ>>
これで、GitHub上でのコミット履歴が正しいアカウントに修正されます!