获取任何合并分支的git diff

时间:2012-06-06 08:03:00

标签: git version-control merge branch diff

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

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

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

更新:实际问题是如何计算adef的SHA总和来执行下一个明显的差异命令diff <commit> <commit> < / p>

4 个答案:

答案 0 :(得分:6)

答案很简单:

git diff 1..d

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

要查找defect1 fix分支的开头,请使用

git merge-base master defect1-fix-branch

如答案所示:https://stackoverflow.com/a/2458173/520162
这会根据git merge-base的文档为您1

defect1 fix分支的结尾只是用它的名字来标识。因此,找到defect1 fix中引入的所有差异,您需要执行

git diff 1..defect1-fix-branch

答案 1 :(得分:4)

注意:这与“Not able to think of a case where git diff master..lab and git diff master...lab would be different”中的详细内容相同,为:

 git diff master...defect1-fix-branch
  

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

git diff dots

(来自“git diff doesn't show enough”)

答案 2 :(得分:1)

怎么样:

git diff <commit> <commit>

其中commit参数是实际提交的SHA校验和。

答案 3 :(得分:0)

如果要查看功能分支引入的更改,合并后,只需运行:

git diff HEAD^..HEAD

master分支上。这显示了HEAD(合并提交)第一个父级和HEAD之间的差异,有效地显示了整个功能分支合并带入主分支的差异。

不需要让事情变得复杂:)

相关问题