ローカルのブランチの最新commitがリモートのブランチの最新commitと一致しているかを安全に確認する

少し汚い話だが、髭を指で引っこ抜いていたら中指に激痛が走ってしまって12時間ぐらい痛みが引かなかった。爪が指に刺さりすぎたのだろうか。髭はひげ剃りで剃ろう。

開発環境

> git --version
git version 2.32.1 (Apple Git-133)

モチベーション

ローカルのブランチのcommitとリモートのブランチのcommitが一致しているかどうか安全に確認したい。
以下のように乱暴に確認できるのだが、もしローカルにリモートには無いcommitがあったらpushされるので安全ではない。安全に確認したい!

> git push origin head
Everything up-to-date

結論

git diff を使おう。

> git diff origin/{BRANCH_NAME} {BRANCH_NAME}  

ブランチ間に対して git diff が実行できる。
git diff は最終commitとステージングに上げていない変更との差分を出力するためだけに使っていた。

ワンライナーで現在のブランチに対して確認

現在のブランチに対して確認することが多そうなのでワンライナーで確認できるようにした。

> git branch | grep "*" | awk '{print $2}' | {read v;  git diff origin/$v $v}

参考