获取任何合并分支的git diff

获取任何合并分支的git diff,git,version-control,merge,branch,diff,Git,Version Control,Merge,Branch,Diff,对于代码中的每个缺陷,我创建单独的分支。当缺陷被修复时,我将这个分支合并到master中,所以我有如下所示的历史记录(我们看到两个分支有修复): 问题是如何在任何时间点(例如,对于过去的任何闭合缺陷)获取fix1(分支起点(1)和分支终点(2)之间)或fix2(分支起点(3)和分支终点(4)之间的差异)的差异 更新:实际问题是如何计算a和d或e和f的SHA总和,以执行下一个明显的diff命令diff答案很简单: git diff 1..d 这显示了defect1修复的分支点(即1)与其结束点(

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

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

更新:实际问题是如何计算
a
d
e
f
的SHA总和,以执行下一个明显的diff命令
diff

答案很简单:

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

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

git merge-base master defect1-fix-branch
如本答案所示:。
根据的文档,这将为您提供
1

defect1 fix
分支的末尾仅由其名称标识。因此,要找到
defect1 fix
中引入的所有差异,您需要执行以下操作

git diff 1..defect1-fix-branch
那么:

git diff <commit> <commit>
git-diff

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

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

git diff HEAD^..HEAD
master
分支上。这显示了头的(合并提交)第一个父级和头之间的差异,有效地显示了整个特征分支合并引入主分支的差异


无需将事情复杂化:)

注意:这相当于,如“”中所述:

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


(摘自“”)

仅作为评论。塑料供应链管理(www,plasticscm.com)完全符合每个任务/缺陷模式的分支。使用塑料,您可以右键单击一个分支,然后按diff branch。使用命令行,您可以执行
cm diff
对,我希望在
之间进行更改。
问题是,如果
a
d
没有标记,如何计算
SHAs
。是否应该是
git diff..
?因为您还想包括
1
a
的差异(这是分支开发的一部分)。
git merge base master defect1 fix branch
给了我
a
而不是
1
的sha。我不得不做
git diff a^..defect1 fix branch
,其中
a
是我从
git merge base
得到的。(注意
a
之后的
^
git merge base master defect1 fix分支
给出的是a,而不是1。获取两个分支的最早祖先并不容易是的,但是如何计算这些提交的SHA校验和?您可以从
git日志中进行检查
git diff HEAD^..HEAD
 git diff master...defect1-fix-branch