有没有办法测试两个差异或补丁是否相等?
假设你有以下git提交历史记录,其中特性F和G可以干净地rebase到E:
G
/
A--B--C--D--E
\
F
由于我们当前部署过程的局限性,我们有以下的、有点相关的图表(它没有版本控制)
G'
/
------------E'
\
F'
最终会以某种待确定的顺序将 F' 和 G' 应用于头部 E',因此它最终会变成
------------E'--G'--F'
有没有一种方法可以测试从 E' 到 G' 的差异是否与由 G 从 B 提交的补丁相同?我完全意识到在理想的情况下,版本控制会解决这个问题,而我们正在朝着那个方向发展,但现在还不是那个阶段。
您可以在独立的检出上播放两个补丁并比较输出,但这似乎有些笨重。而且假设比较差异本身是行不通的,因为行号可能会更改。即使 G' 和 F' 被变基到 E',F' 的补丁最终也会应用到 G' 上,从而使补丁的差异上下文不同。
git patch-id
和git cherry
(还可以查看 git log 的--cherry*
选项)作为快速答案,但它太严格了,可能会将一些微小的更改视为重要。当您需要确定的答案时,差异比较是正确的方法。 - max630