経緯
- Gitを利用する場合、Author情報(name,email)の設定が必要ですが、コミット履歴(コミットログ)を含むAuthor情報を変更したかった。
- gitコマンドでは、以下コマンドでAuthor情報を変更可能だが、コミット履歴(コミットログ)は変更できない。
# VSCodeなどで編集して変更
git cofing --global(--local) --edit
# コマンド経由で変更
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
調査したところ、コミット履歴(コミットログ)の変更は、git-filter-repoを使用することで対応可能であることがわかりました。
対応
git configコマンドでAuthor情報を変更し、その後、git filter-repoコマンドを実行する手順で対応しました。- ただし、コミット環境ではgit configが異なるケースがあり、複数の
nameとmailが記録されていたため、mailmap.txtという置換用のデータを指定することで対応しました。 - 一連の操作はスクリプト化して実行しました。
❗注意事項❗
- コミット履歴を変更するため、コミットハッシュも変更されます。そのため、フォーク元やフォーク先、プルリクエストなどにも影響を与えますので実行時は注意が必要です。
- 本記事に記載された内容やコードによって生じたいかなる損害についても責任を負いません。使用する際は自己責任でお願いします。
シェルスクリプト
スクリプト実行後はgit logコマンドを実行、および、リモートリポジトリでコミット履歴を確認し、意図通り置換されていることを確認してください。
もし、git pullなどでエラーになる場合は、git cloneを実行して再取得する必要があるめ注意してください。
以上です。