2009-08-25 15 views
139

可能性の重複:
Using Git how do I find modified files between local and remotegitでコミットを確認するにはどうしたらいいですか?

がどのように私はgitの中に入ってくるのコミットを見ることができますか?またはそれ以上に、私がちょうど何を参照してくださいgit fetch/git pull ed?

編集

は質問を明確にするには、次の誰かが、いくつかの修正を得るために、私は彼らのリポジトリからプルする必要があることを私に伝えます。私の目標は、彼らの変更が の前にの前にあることを確認することです。 git pullは自動的にマージされますが、これは私が望むものではありません。 git fetchはマージすることなく、それらをつかむだろうが、私はちょうどに引っ張らまさに表示する方法がわからないんです。オリジナルのフレージングの理由は、私は通常、コマンドはGitが欠けているように思われる hg incoming <repo name here> —コマンドになりMercurialのを、使用していることですアナログ。

答えて

149

incoming ISN:あなたはローカルブランチ「マスター」と他の人が自分のコードをコミットリモート追跡ブランチ「起源/マスター」を持っていると仮定、次の2本の枝の違いについて異なる統計情報を取得することができますなぜなら、あなたが引き出している複数のリポジトリがあり、それぞれのリポジトリには複数のブランチがあるからです。

HGの入コマンドと同等であった場合、それはおそらく、このことだ:

git fetch && git log ..origin/master 

上流からグラブにもののすべてを移動し、反対私の現在のブランチを比較する」、すなわち上流のマスターブランチ。

同様に、出て行くが、この次のようになります。実際には

git fetch && git log origin/master.. 

それが追跡している支店がたくさんあることは簡単ですので、私はちょうど(私はそれらのいずれかのエイリアスを作成していても)、手動でそれらを入力します遠隔地の支店の多​​くで追跡され、一緒にそれを維持することは問題ありません。

+6

また、 'git diff -stat origin/master'を使って、' git pull'が成功裏にマージした後に表示されるdiffstatを見たいかもしれません。 –

+1

この回答をありがとう@ダスティン!私は、 'log.origin/master'の背後にある魔法を、ドットが何を意味するのかよく分かりません。 – gideon

+0

これはあまり魔法ではなく、 'git log'の概要で表示され、[manページ](http://schacon.github.com/git/git-log)のオプションセクションの2番目のオプションとして説明されています。 html)を開き、さらに詳しく説明する[gitrevisions](http://schacon.github.com/git/gitrevisions.html)のドキュメントにアクセスします。 – Dustin

1

「着信コミット」ユーザーがローカルにコミットしてプッシュすることはありません。私はgitxまたはgitk(gitに付属しています)を開いて、reposの外観を確認します...私はあなたに明確な見方を与えると思います。

使用:gitk --allを参照してください。

+0

私の明確な質問を参照してください。 –

+0

ああ、私はあなたが今何を意味するかを見ます、ダスティンの答えは死んでいます。詳細についてはありがとう。 –

10

2つのリポジトリの違いを調べることができます。

git diff --summary master origin/master 

git diff --stat master origin/master 

git diff --numstat master origin/master 

git diff --dirstat master origin/master 

git diff --shortstat master origin/master 

git diff --name-only master origin/master 

git diff master origin/master 
+1

質問はdiffを表示することではなく、コミットを視覚化してユーザーが行ったことを引き出すことです。 –

+1

真実ですが、Netzpiratが近いかのように感じます。これがdiffの代わりにログを表示していれば完璧です。 –

80

また、git whatchangedに興味があるかもしれませんが、いくつかのコミットの範囲で行われた変更の概要がわかります。

あなたは(あなた枝のといない)だけでリモートリポジトリにローカルのトラッキングブランチを更新する、git fetch最初の操作を行い、あなたが引くしようとしているものを確認して、その番組の任意のコマンドを使用したい場合あなたはあなたが引っ張っている新しいコミットをあなたに与えます。たとえば:

git whatchanged ..origin 

これは「起源」を通じて「共通私は今の私どこの祖先と原点」とのコミットを示すための省略形です。

+0

ああ、私はgit logを使うよりもこれが好きです。 –

6

誰かがあなたにプルするよう指示したら、彼らはあなたにレポURLとブランチを渡します(デフォルトはmaster)。

私は(優先順で)1続い

git fetch URL branch 

をちょうど行いたい:

# note 3 dots in next 3 commands 
gitk HEAD...FETCH_HEAD 
    # shows all commits on both sides since the "fork" point 
gitk --cherry-pick HEAD...FETCH_HEAD 
    # as above but skips identical patches so you really see the differences 
git log --graph --boundary --left-right --cherry-pick --decorate HEAD...FETCH_HEAD 
    # I have a nice alias for this; it's the text mode eqvt of the above 

私も時々、 "tig" を使用しますが、この特定のユースケース(の両方を見て側)はtigで十分にサービスされていません。あなたは(私はまだ3つのドットのバージョンを好むものの、より密接にあなたの実際の質問に一致する場合があります)2つのドットにそれをダウンさせる場合

しかし、あなたはここで

tig HEAD..FETCH_HEAD 

を行うことができます便利な別名:

incoming = !sh -c 'git fetch && git log --graph --boundary --left-right --cherry-pick --decorate HEAD..FETCH_HEAD' 
outgoing = !sh -c 'git fetch && git log --graph --boundary --left-right --cherry-pick --decorate FETCH_HEAD..HEAD' 
0

この投稿をご覧ください。 これは、gitバージョン1.7で導入された新機能の使い方を示しています。 Using Git how do I find changes between local and remote

+0

"ここに見てください"という投稿は良い答えではないと思います。自分の言葉を使って、このサイトの質問に答えてください。 – activedecay

関連する問題