Androidのメモとか

ポキオの日記です。今日も遅延してない。

gitのコミットでauthorとcommitterがバラバラになってたので必死で直した

なぜなぜ案件。

やらかした

pokiiio.github.io

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

参考にしたページ

qiita.com

poyopoyo0.hatenablog.com

qiita.com

qiita.com

いやぁ、助かりました。

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。