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

Fil*_*zka 4 git diff

自从我上次查看它以来,我希望能够看到分支中的更改,但是忽略了同时发生的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可能提供的上下文-所以...还有什么更好的吗?

Fil*_*zka 6

因此解决方案是使用新的git range-diff

只需运行git range-diff c3af8fc5..7ccc4b49 4dfdabdd..301a443c,或更简单的方法就git range-diff 7ccc4b49...301a443c可以工作,除非您进行了一些非常疯狂的调整。

为了获得更好的解释,我引用了一些相关主题