gpt4 book ai didi

Git diff 分支在 rebase 之前和之后忽略 master 中的更改

转载 作者:太空狗 更新时间:2023-10-29 13:30:27 24 4
gpt4 key购买 nike

我希望能够看到一个分支中的变化,自从我上次审查它以来,但忽略了同时发生在 master 中的变化。

     F - G       H - I
/ /
A - B - C - D - E

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


想象一下,您正在为您的同事进行代码审查,您检查了他在本地的分支和您的 HEAD现在指向 G .您进行代码审查并继续做其他事情。

一段时间过去了,新提交出现在 master 中(CDE),您的同事已经解决了您评论中的评论。他压缩了对提交的更改 FG , 因为他重命名了 F 中介绍的方法并在 G 中修复了它的用法.他还重新将分支建立在 master 上,以确保一切正常。

现在你想再次进行代码审查,但你又懒得对整个分支再次进行代码审查,所以你只想查看与上次相比发生了什么变化。您仍然可以在本地获取旧引用。你是做什么的?

你可以做类似 git-diff G I 的事情,但这也会向您显示 master 中的更改,这对您根本没有帮助。

你也可以在当前的 master 上 rebase 旧的 refs,然后 diff 它们。这可能会有所帮助,但也可能存在很多冲突,这可能会使再次审查整个分支变得更容易。


我试过了 diffing patches

diff <(git-diff c3af8fc5...7ccc4b49) <(git-diff 4dfdabdd...301a443c)

它帮助我将注意力转移到某个地方,但它非常粗糙。

您知道解决此问题的更好、更原生的方法吗?谢谢。


编辑:我刚刚 discovered interdiff ,这使得区分两个差异变得更好

interdiff <(git-diff -U100 c3af8fc5...7ccc4b49) <(git-diff -U100 4dfdabdd...301a443c)  | colordiff

但是,它仍然缺少 git 可能提供的上下文——那么……还有什么更好的吗?

最佳答案

所以解决方案是使用新的git range-diff .

只需运行 git range-diff c3af8fc5..7ccc4b49 4dfdabdd..301a443c,或者更简单的 git range-diff 7ccc4b49...301a443c 可能会起作用,除非你已经做了一些非常疯狂的 rebase。

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

关于Git diff 分支在 rebase 之前和之后忽略 master 中的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46612507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com