获取任何合并分支的git diff
对于代码中的每个缺陷,我创建单独的分支。当缺陷被修复时,我将这个分支合并到master中,所以我有如下所示的历史记录(我们看到两个分支有修复): 问题是如何在任何时间点(例如,对于过去的任何闭合缺陷)获取fix1(分支起点(1)和分支终点(2)之间)或fix2(分支起点(3)和分支终点(4)之间的差异)的差异 更新:实际问题是如何计算获取任何合并分支的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)与其结束点(
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