12

コードの欠陥ごとに、別のブランチを作成します。欠陥が修正されたら、このブランチを master にマージします。そのため、以下に示すような履歴があります (修正された 2 つのブランチが表示されます)。

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

問題は、修正 1 (分岐開始 (1) と分岐終了 (2) の間) または修正 2 ((3) と (4) の間の差分) の差分を任意の時点で取得する方法です (たとえば、過去に閉じられた欠陥)。 .

a更新: 実際の問題は、 anddまたはeandの SHA の合計をどのように計算しfて、次の明らかな diff コマンドを実行するかです。diff <commit> <commit>

4

4 に答える 4

9

答えは簡単です。

git diff 1..d

defect1 fixこれは、ブランチの分岐点(つまり1) とその終わり (つまり)の違いを示していますd

defect1 fixブランチの開始を見つけるには、次を使用します

git merge-base master defect1-fix-branch

この回答に示されているように: https://stackoverflow.com/a/2458173/520162
これにより1、 のドキュメントに従って提供されますgit merge-base

ブランチの終わりは、そのdefect1 fix名前で簡単に識別されます。したがって、 で導入されたすべての違いを見つけるにはdefect1 fix、次のことを行う必要があります。

git diff 1..defect1-fix-branch
于 2012-06-06T08:05:25.930 に答える
6

注: これは、「 と が異なる場合を考えることができない」で詳述されているように、以下同等ですgit diff master..labgit diff master...lab

 git diff master...defect1-fix-branch

git diff A...Bと同等ですgit diff $(git merge-base A B) B

git diff ドット

(「git diff が十分に表示されない」より)

于 2012-11-20T13:07:24.463 に答える
1

機能ブランチが導入された変更を確認したい場合は、マージ後に次のコマンドを実行します。

git diff HEAD^..HEAD

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

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

于 2012-06-06T09:15:39.337 に答える
1

どうですか:

git diff <commit> <commit>

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

于 2012-06-06T08:05:36.157 に答える