2011-01-25 5 views
4

私はgitには新しく、svnに似た集中ワークフローを使用しています。私は定期的に私の地位が中央のレポと比較されているかを知りたいです。たとえば、次のコマンドを実行した場合...集中ワークフローを使用したGit

... git pullは "already up to date"と言っています。どうしてgitがレポートの変更をプルするのではないのですか?それが正しい動作ならば、私のローカルがリモートと同期していないことを知る方法はありますか?

答えて

7

git pullリモートリポジトリで行われた変更はすべてsvn updateに相当します。しかし、あなたの側に遠隔地にない変更があるかどうかは言及されません。 git fetchを実行して、の更新情報をのワークスペースに適用せずに取得することもできます。 gitの最近のバージョンでは

(例えば1.7.2.3ここ)git statusは例えば、あなたがこれを見るのを助けるためにいくつかの情報を印刷します:私はgit fetchを行なったし、待っているの変化があることを意味した後

# On branch master 
# Your branch is behind 'origin/master' by 20 commits, and can be fast-forwarded. 

これが表示されます私のワークスペースに行くために私はそれらを引くと作り、ローカルに変更をコミットする場合はこれとは対照的に

、(git pullを行うことによって適用される)、git statusは私に語った:

# On branch master 
# Your branch is ahead of 'origin/master' by 1 commit. 

つまり、リモートにプッシュできるローカル変更があります。私は次にそれらをリストすることができるgit log origin/master..

+0

ありがとう、私は今それを得る。解決策として 'git log origin/master ..'に加えて、リモートブランチの 'git diff'へのJasonからの提案にも、ローカルの変更とリモートの変更が示されました。 – Ravi

+0

そうです、 'git log -p ....'はローカル変更が1つだけの場合も同じことを示します。複数のローカル変更がある場合、 'git log'は個々にdiffを表示し、' git diff'は全てのdiffを表示します。 – araqnid

3

"git pull"コマンドは、リモートリポジトリからの変更をプルするだけでローカルブランチにマージします。

違いを調べるには、git br -aを使用してリモートブランチを一覧表示してから、ローカルブランチが追跡しているリモートブランチをgit diffする必要があります。

1

git fetchを使用して、ローカルリポジトリのリモートブランチを更新してください。ダウンロードしたものがあるかどうかを示すダイアログが表示され、git diffまたはgit logを使用して比較します。

関連する問題