相关疑难解决方法(0)

有没有办法比较两个差异或补丁?

有没有办法测试两个差异或补丁是否相同?

假设您有以下git提交历史记录,其中功能F和G可以完全重新映射到E:

     G
    /
A--B--C--D--E
 \
  F
Run Code Online (Sandbox Code Playgroud)

由于我们当前部署过程的限制,我们有以下几个相关的图表(它不受版本控制)

              G'
             /
------------E'
             \
              F'
Run Code Online (Sandbox Code Playgroud)

F'和G'最终将被应用于头部E',其中一些是确定的顺序,所以它最终会像

------------E'--G'--F'
Run Code Online (Sandbox Code Playgroud)

有没有办法测试从E'到G'的差异与B中G的Git提交产生的​​补丁相同?

我完全意识到,在一个理想的世界中,修订控制可以解决这个问题,而且我们已经到了那里,但那不是我们现在所处的位置.

你可以基本上在单独的结账时播放两个补丁并比较输出,但这看起来很笨重.并且比较差异本身,我假设,不会工作,因为行号可能会改变.即使G'和F'被重新定义为E',F'的补丁也将最终应用于G',使得补丁的差异上下文不同.

git version-control

27
推荐指数
3
解决办法
7758
查看次数

如何比较Git中的变更集?

使用git命令diff和difftool,Git可以很容易地比较提交之间的差异.同样在TortoiseGit中,您只需选择两个提交来比较它们.

但有没有办法比较变更集?换句话说:查看一组提交的差异与另一组提交的差异之间的差异.

这可以非常方便地比较(一组)提交,这些提交是挑选的或已被重新定位的.

git diff compare commit tortoisegit

12
推荐指数
3
解决办法
9196
查看次数

重新调整前后的Git diff分支忽略了master中的更改

自从我上次查看它以来,我希望能够看到分支中的更改,但是忽略了同时发生的master更改。

     F - G       H - I
    /           /
A - B - C - D - E
Run Code Online (Sandbox Code Playgroud)

我有两个提交范围c3af8fc5..7ccc4b49(由表示B - G)和4dfdabdd..301a443c(由表示E - I)。


想象一下,您正在为您的同事进行代码审查,签出他在local上的分支,您HEAD现在指向G。您进行代码审查,然后继续其他工作。

经过一段时间,新提交出现在大师(CDE)和你的同事已经解决了从您的评论的意见。他压扁的更改提交FG,因为他改名方法介绍F和固定它的用法G。他还根据Master调整了分支,以确保一切正常。

现在,您想再次进行代码审查,但是您懒于再次对整个分支进行代码审查,因此您只想查看上次更改的内容。您仍然有从本地获取的旧裁判。你是做什么?

您可以执行类似的操作git-diff G I,但这也可以向您显示master的更改,这些更改根本无济于事。

您也可以将旧的refs放在当前的master上,然后进行比较。这可能会有所帮助,但也可能存在很多冲突,这可能会使再次审查整个分支变得更加容易。


我试过差异补丁

diff <(git-diff c3af8fc5...7ccc4b49) <(git-diff 4dfdabdd...301a443c)
Run Code Online (Sandbox Code Playgroud)

它可以帮助我将注意力转移到某个地方,但这很粗糙。

您知道解决这个问题的更好,更原生的方法吗?谢谢。


编辑:我刚刚发现了interdiff,这使得比较两个diff更好

interdiff <(git-diff -U100 c3af8fc5...7ccc4b49) <(git-diff -U100 4dfdabdd...301a443c)  | colordiff
Run Code Online (Sandbox Code Playgroud)

但是仍然缺少git可能提供的上下文-所以...还有什么更好的吗?

git diff

4
推荐指数
1
解决办法
1236
查看次数

标签 统计

git ×3

diff ×2

commit ×1

compare ×1

tortoisegit ×1

version-control ×1