获取任何合并分支的git diff

Ale*_*yev 9 git version-control diff merge branch

对于代码中的每个缺陷,我创建单独的分支.当缺陷修复后,我将这个分支合并到master中,所以我的历史如下图所示(我们看到两个分支有修复):

          defect1 fix         defect2 fix
         a---b---c---d           e---f
        /             \         /     \
---o---1---x---y---z---2---o---3---w---4---o--- 
Run Code Online (Sandbox Code Playgroud)

问题是如何在任何时间点(例如,对于过去的任何封闭缺陷)获取fix1(在分支开始(1)和分支结束(2)之间)或fix2(在(3)和(4)之间的差异)之间的差异.

更新:实际的问题是如何计算出的SHA summs adef执行下一个明显的diff命令diff <commit> <commit>

eck*_*kes 7

答案很简单:

git diff 1..d
Run Code Online (Sandbox Code Playgroud)

这显示了defect1 fix分支(即1)的分支点与其结束(即d)之间的差异.

为了找到defect1 fix分支的开头,请使用

git merge-base master defect1-fix-branch
Run Code Online (Sandbox Code Playgroud)

如答案所示:https://stackoverflow.com/a/2458173/520162.
这给你1根据文件git merge-base.

defect1 fix分支的末尾只是用它的名字来标识.因此,找到引入的所有差异defect1 fix,你需要做

git diff 1..defect1-fix-branch
Run Code Online (Sandbox Code Playgroud)


Von*_*onC 5

注意:这等效于,如“无法想到git diff master..labgit diff master...lab将不同的情况”中详述的:

 git diff master...defect1-fix-branch
Run Code Online (Sandbox Code Playgroud)

git diff A...B 相当于 git diff $(git merge-base A B) B

git diff 点

(来自“ git diff 显示不够”)