在 git 中,如何验证merge upstream master
提交不包含任何其他差异?假设我想验证此人除了实际合并上游主分支的更改外,没有做任何"偷偷摸摸"的事情。
我想验证唯一的差异来自他们所做的其他提交;他们没有执行"邪恶合并"。
有没有办法验证在合并步骤中没有进行其他更改?
或者更好的是:向我展示潜在的"邪恶合并"差异,这样我就可以亲眼看看可能做了哪些额外的工作?
示例场景:
P1---P2 P3---P4---P5---P6
/ / /
A---B---C---D--E--------F---------G master
/
C1---C2
P1..P2: First pull request
C1..C2: My working branch
P3..P4: More work done inbetween
P5: The commit that merges in master branch changes
P6: More regular work
- 有人向我的存储库发送拉取请求(
P1..P2
) - 拉取请求太棒了,我合并了它(
E
) - 我做一些进一步的开发(
C1..C2
),将我自己的分支集成到master(F
),并发布 - 对方在此期间做了更多的工作(
P3..P4
) - 他们将上游更改合并到本地存储库 (
P5
中,进行更多更改 (P6
),并发送第二个拉取请求 - 我可以验证他们在合并(
P5
)期间没有潜入任何额外的差异吗?
您可以通过执行差异差异来检查 git 合并提交是否包含任何其他更改。这是一种方法。
P1---P2 P3---P4---P5---P6
/ / /
A---B---C---D--E--------F---------G master
/
C1---C2
计算合并前原始公共父
E
和主分支提交之间主分支中所有更改的差异,F
:git diff E F> master_changes_to_merge.txt
计算"在主节点中合并"提交中更改的所有内容的差异,
P5
git diff P4 P5> master_changes_actually_merged.txt
差异那些:
差异master_changes_to_merge.txt master_changes_actually_merged.txt
如果步骤 3 没有显示输出,则应该没有恶意的合并更改。