在git中,如何验证merge upstream master
提交不包含任何其他差异?假设我想验证该人没有做任何'偷偷摸摸'的事情,除了实际合并来自上游主分支的更改。
我想验证唯一的差异来自他们提出的其他提交;他们没有执行'evil merge'。
有没有办法验证合并步骤中是否没有进行其他更改?
或者更好:向我展示潜在的'邪恶合并'差异所以我可以亲眼看看可能做了多少额外的工作?
示例场景:
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
),将我自己的分支集成到主(F
),然后发布P3..P4
)P5
),进行更多更改(P6
),然后发送第二个拉取请求P5
)吗?答案 0 :(得分:1)
您可以通过执行diff的diff来检查git merge commit是否包含任何其他更改。这是一种方式。
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
区分那些:
diff master_changes_to_merge.txt master_changes_actually_merged.txt
如果步骤3显示没有输出,则不应该有恶意合并更改。