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 a和d或e和f执行下一个明显的diff命令diff <commit> <commit>
答案很简单:
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)
注意:这等效于,如“无法想到git diff master..lab和git 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 显示不够”)
| 归档时间: |
|
| 查看次数: |
3995 次 |
| 最近记录: |