TL;DR;
gitでリモートのベースブランチ(masterとする)が今いるブランチから何コミット進んでいるか知りたければ
git fetch; git log --no-merges --oneline ..origin/master | wc -l
と打てば良い。
余談
補足説明
例えば、featureブランチで作業中に、他の人のコミット7個が origin/master にマージされている状態でこのコマンドを打ち込むと、
$> git fetch; git log --no-merges --oneline ..origin/master | wc -l
7
のようにコミット数が表示されます。
※fetchしていないコミットがある場合には数字が出る前にfetchの結果が出力されます。これを捨てることはできますが、重要な情報なので表示した方が良いでしょう。
エイリアス
よく使うなら、こんなエイリアスを登録しておくと便利かもしれません。
[alias]
mile-to-master = "!f() { git fetch; git log --no-merges --oneline ..origin/master | wc -l; }; f"
あまりいい名前を思い付かなかった…。
関数にするとブランチ名の補完が効かなかったりするので、エイリアス固定にしとくと楽な気がします。
経緯
とあるSlackグループでこんな話が出ました。
gitでローカルでfeatureブランチで作業しているうちにbaseブランチが何コミット進んだかをCLIで数えるお手軽な方法あんのかな
確かに、自分が作業してる間に世間がどれだけ先行したかを知りたいときはあるなー、と思ったので、簡単なワンライナを考えてみました。
git log --no-merges --oneline ..master | wc -l
で、この話題を出した人が現在のリモートと比較するならfetchが要るよね、ということでfetchを加えて、こうなりました。
git fetch; git log --no-merges --oneline ..origin/master | wc -l