gitのリモートリポジトリの更新を確認する

gitのリモートリポジトリの更新を確認する - Qiita

方法1の後、pull するとローカルに反映される。

gitのリモートリポジトリが更新されているかどうかを確認する方法はいくつかあります。

方法1: git fetch 後にdiffをとる

$ git fetch origin
$ git diff origin/master

方法2: git ls-remote コマンドを使用する

git ls-remoteを使用することでリモートリポジトリのコミットIDが取得できます。

リモートリポジトリの最新コミットID(HEAD)とローカルの最新コミットID(HEAD)を比較し、その2つが異なっていれば差分があると判断できます。
さらに、リモートのコミットIDが過去に存在しないものであれば、ローカルのリポジトリが古い(マージしていないコミットがリモートに存在する)ことになります。

$ git ls-remote origin HEAD
78ddd44eb3b76017a55014f27d9f846054dfa52b HEAD
$ git log -1 HEAD # or master
commit 8741c1a1fd81e0e3620e7054f3731ad2338f25fa
$ git log -1 origin/HEAD # or origin/master
commit 8741c1a1fd81e0e3620e7054f3731ad2338f25fa

方法3: git remote show コマンドを使用する

以下のように実行結果の最終行に (local out of date) と表示されていればローカルの方が古いことになります。(ブランチが複数ある場合は複数行表示されます)

ただし、リモートブランチと同名のブランチがローカルにも存在する場合のみ表示されます。
また、リモートブランチと異なる名前のブランチは upstream/tracking branch を設定していても表示されません。(残念…)

git remote show origin

remote origin
Fetch URL: git://github.com/Shougo/unite.vim.git
Push URL: git://github.com/Shougo/unite.vim.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (local out of date)