【发布时间】:2021-05-05 16:24:01
【问题描述】:
场景
- 有一个临时分支(temp1)独立运行,提交
A..B..C..D..E.. - 还有另一个功能分支 (feature1) 与其他提交
P..Q..R..S..T - 现在,开发人员从 temp 分支中挑选提交“C”并合并到 feature1 中(假设:没有任何冲突,因为它们是完全不同的代码区域)以获得
P..Q..R..S..T..C1(注意:这个 C1 与 C 过去有相同的变化,但只是不同的提交 ID,因为我们知道提交在 GIT 中是不可变的)
现在,作为开发人员,我想验证 T..C1 和 B..C 之间的差异,以确保每个内容都完全相同。
我已经走了多远?
-
我可以从 temp 分支看到 C 中所做的更改:
$git diff C C~1 -
我可以从 feature1 分支看到 C1 中所做的更改:
$git diff C1 C1~1 -
当与 --name-only 属性一起使用时,这会显示确切的文件
$git diff C C~1 --name-only
$git diff C1 C1~1 --name-only
问题: 我想看看 (1) 和 (2) 之间的差异,以验证内容是否相同。
【问题讨论】:
-
嘘! Git 提交是snapshots, not diffs。所以 C1 没有“与 C 相同的变化”,但 T..C1 与 B..C 具有相同的变化。我认为这不会从根本上改变您的问题,但我认为应该指出这一点。
-
是的,你是对的。我可以改写那个词......但基本上你明白我在寻找什么......即这些变化是否相同?
-
我只需将两个差异输出通过管道传输到文件并执行简单的
diff diff1.txt diff2.txt,但可能有更简单/更好的方法。 -
@JoachimSauer T..C1 是否应该没有与 A..B..C 相同的变化(而不仅仅是 B..C)?因为,正如您所说,您合并的不仅仅是一个提交的更改。