2012-06-06 14 views
7

コード内の各欠陥について、別々のブランチを作成します。欠陥が固定されているとき、私はマスターで、このブランチをマージするので、私はのような歴史を持っている(私たちは修正を持つ2つのブランチを参照)以下に例示する:任意のマージされたブランチに対してgit diffを取得します。

  defect1 fix   defect2 fix 
     a---b---c---d   e---f 
     /   \  / \ 
---o---1---x---y---z---2---o---3---w---4---o--- 

質問は、分岐開始までの間(FIX1ためのdiffを取得する方法である(1)任意の時点(例えば、過去の閉じた欠陥の場合など)でfix2((3)と(4)の間でdiff)を実行することができます。

更新:実際の質問次の明白なdiffコマンドを実行するためにadまたはefのSHAのsummsを把握する方法であるdiff <commit> <commit>

+0

ちょうどコメントとして。プラスチックSCM(www、plasticscm.com)は、タスク/欠陥パターンごとの分岐に完全に適合します。Plasticを使用すると、ブランチを右クリックしてdiffブランチを押すことができます。コマンドラインを使って 'cm diff ' –

答えて

6

答えは簡単です:

git diff 1..d 

これは違いを示しdefect1 fixブランチポイント(つまり1)とそれが終了するブランチポイント(つまりd)の間にあります。 https://stackoverflow.com/a/2458173/520162:この回答に示すようにdefect1 fixブランチの開始を見つけるために

は、

git merge-base master defect1-fix-branch 

を使用しています。
これはgit merge-baseのドキュメントに従って1を提供します。

defect1 fixブランチの終わりは、単にその名前で識別されます。だから、defect1 fixで導入されたすべての違いを見つける、あなたは約

git diff 1..defect1-fix-branch 
+0

することができます。正しく、 ' .. 'の間で変更したいのですが、タグ付けされていなければ' a'と 'd'の' SHAs'を調べる方法があります。 –

+0

@AlexanderNikolayev:更新された回答を参照してください。 – eckes

+1

'git diff .. 'ではないでしょうか?なぜならdiffに '1'と' a'も含めたいからです(これは分岐の開発の一部です)。 – Shahbaz

1

何をする必要があります。

git diff <commit> <commit> 

コミットのパラメータは、実際のコミットのSHAチェックサムである場合。

+1

はい、これらのコミットのSHAチェックサムを調べる方法はありますか? –

+0

これは 'git log'から確認できます。 –

0

あなたはそれがマージされた後、導入された機能ブランチを変更するかを確認したい場合は、単に実行します。masterブランチで

git diff HEAD^..HEAD 

を。これは、HEAD(マージコミット)の最初の親とHEADとの違いを示し、機能ブランチ全体がマスターブランチにもたらされた違いを効果的に表示します。

物事を複雑にする必要はありませんが:)

関連する問題