2011-03-10 7 views
20

私はmasterブランチと私のfeatureブランチの違いを見たいと思っています。私はマスターからフィーチャーブランチまで多くのプルを持っており、自分のフィーチャーをマスターにマージした場合に追加される変更を見たいと思っています。git diffが十分に表示されない

これが私の状況です:

-*--*--*-----*<master> 
    \  \  \ 
    1--*--*--*--2--*<feature> 

私の問題はgit diff master featureあるだけ私はすべての方法であると考えてgithubのプルリクエストが表示されるでしょう差分を、見たい番号2をコミット表示するように思えます1をコミットする。 私は気づいたgit cherry私はその違いを見たいコミットを示しています。

ありがとうございました。

答えて

113

git diff A Bを実現するために重要なことは、コミットグラフの正確な2つの点の間のツリーの状態の違いのみを表示することです。履歴については気にしません。 git diffに使用.....表記は以下の意味を有する:だからあなたはgit diff master featureを実行したときに

An illustration of the different ways of specifying commits for git diff

ちょうどあなたが2としてマークしたコミットにより導入された変化を示すいない - 出力が表示されるはずですmasterにコミットされたツリーの状態とfeatureにコミットされたツリーの状態との間の正確な差異。フィーチャーブランチの以前の変更を表示していない場合は、マスターの以前のマージからの相違を解決して、masterのバージョンを優先しているのでしょうか?

cebewee saysとして、それはgit logが歴史についてケアを行いますので、あなたがしたいことは、git log -p master..featureである可能性があります。彼らはコミットの範囲を選択するので..git logため...の意味が異なっている: - 代わりにあなたがすべき

An illustration of the different ways of specifying ranges of commits for git log

ところでを、そのことが多いトピックブランチへmasterからマージすることは行うには間違ったことであると述べましたトピックのブランチをマージした後にmasterにマージしてください。これにより、トピックブランチの意味を容易に理解できるようになります。 gitのメンテナーは、それについて議論しているthe philosophy of mergingについての(幾分理解しにくい)ブログ投稿をしました。

+2

を参照してください。ただし、リンクされたブログの記事は、機能ブランチはもはや 'アクションの1つの正しいコースをmaster'きれいに合流している状況ににmaster''マージすることであると言うんフィーチャーブランチのフィーチャーブランチを作成し、フィーチャーブランチの競合を解決 – Plasma

+0

マージの哲学へのリンクありがとうございます。私はそれを読んでいて、作者の名前を見つけることができませんでした。ただ、彼は仲間でした。あなたは彼の名前を知っていますか? - 編集:気にしないでください。彼の名前はJunio C Hamanoです。 Tx –

6

git diff master featureには、コミットのいずれも表示されませんが、コミットのマスターと機能の間のテキストの違いです。フィーチャーからのすべてのコミットを見たいかのように聞こえますが、まだマスターにはありませんか?この場合、差異を表示する場合は、git log master..featureまたはgit log -p master..featureを試してください。

「a..b」構文の説明については、man git-rev-parseの範囲の指定を参照してください。

1

私はgitには比較的新しいですが、私はあなたの質問を正しく理解しています。あなたの質問はからではなく、リモートとローカルのリポジトリとそれらがお互いにどのように関係しているかを正しく理解していません。私はそれを理解すると、すべてが2倍になったことを覚えています。

あなたは、あなたが唯一の2支店持っている場所の下、このような状況にあるだと思う

  • featureBranch
  • masterBranch

しかし、あなたがgit branch -aを行うかどうかを確認することができますがすべて、支店、、リモートです。

だからあなたの本当のの状況は次のとおりです。

  • featureBranch
  • masterBranch
  • remoteBranch(S)
*---* <remote's Master> which is behind your local 
     \ 
     -*--*--*-----*<master> which is ahead of your remote/origin 
     \  \  \ 
     1--*--*--*--2--*<feature> 

ためにGithub Pull Requestには、diffと一致するdiffを表示するには、のリモートブランチを使用する必要があります。

git diff <local branch> <remote>/<remote branch> 

compare local git branch with remote branch?

関連する問題