12

对于代码中的每个缺陷,我创建单独的分支。修复缺陷后,我将此分支合并到 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)之间的差异)的差异(例如,对于过去的任何封闭缺陷) .

更新:实际问题是如何计算ad或的 SHA 总和ef执行下一个明显的 diff 命令diff <commit> <commit>

4

4 回答 4

9

答案很简单:

git diff 1..d

defect1 fix这显示了分支的分支点(ie 1) 和它的结束 (ie )之间的差异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 <commit> <commit>

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

于 2012-06-06T08:05:36.157 回答
1

如果您想查看功能分支引入了哪些更改,在合并后,您只需运行:

git diff HEAD^..HEAD

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

无需让事情变得复杂:)

于 2012-06-06T09:15:39.337 回答