なぜなぜ案件。
やらかした
Github Pagesで色々遊んでたんですが、コミットする環境によってauthorとcomitterがバラバラになってました。全部pokioアカウントで統一したかったんですが、他のアカウントのものが混じってしまい必死で修正したので、そのメモを残しておきます。
過去のコミットのauthorとcommitterを一発で変更する
単刀直入にいうと、以下のようなコマンドで後から修正できます。
git filter-branch -f --env-filter "GIT_AUTHOR_NAME='pokio'; GIT_AUTHOR_EMAIL='32353873+pokiiio@users.noreply.github.com'; GIT_COMMITTER_NAME='pokio'; GIT_COMMITTER_EMAIL='32353873+pokiiio@users.noreply.github.com';" HEAD
ここで、メールアドレスはgithubから付与されるアドレスで、これのお陰でgithubアカウントに紐付いているプライベートのアドレスを晒さずに済みます。https://github.com/settings/emailsで確認できます。
コミットログを後から修正する
上記のコマンドを実行すると、たまにコミットログにゴミが付与されることがあったので、コミットログも修正しました。
git rebase -i HEAD
基本的にgit rebaseで書き換えていきます。
ローカルのgit configを設定する
もちろん、globalのgit configとは別に、レポジトリ毎にnameとemailを覚えさせておけるので、設定したいローカルレポジトリをワーキングディレクトリにしてから、下記のコマンドを実行。
git config --local user.name pokio git config --local user.email 32353873+pokiiio@users.noreply.github.com
ローカルレポジトリをリモートレポジトリで強制上書き
上記までの方法で色々修正したのに、コマンドを打ったマシンとは別のマシンに古いコミットが残っていて、それをリモートレポジトリにシンクさせちゃうと、またもとに戻ってしまうので、そういうマシンでは以下のコマンドを実行して、強制的にローカルレポジトリをリモートレポジトリ相当にします。
git fetch origin master
git reset --hard origin/master
参考にしたページ
いやぁ、助かりました。