我希望能够查看分支自上次审核以来的更改,但忽略期间在主分支中发生的更改。
F - G H - I
/ /
A - B - C - D - E
我有两个提交范围
c3af8fc5..7ccc4b49
(用 B - G
表示)和 4dfdabdd..301a443c
(用 E - I
表示)。假设你正在为你的同事进行代码审查,你在本地检出了他的分支,现在你的
HEAD
指向 G
。你完成了代码审查并继续做其他事情。一段时间过去了,主分支出现了新的提交 (
C
, D
和 E
),你的同事已经解决了你的审查意见。他将更改压缩为提交 F
和 G
,因为他重命名了在 F
中引入的方法,并修复了其在 G
中的使用。他还将分支重新基于主分支,以确保一切正常。现在你想再次进行代码审查,但是你懒得再次对整个分支进行审查,所以你只想看看上次以来有什么变化。你仍然在本地获取了旧的引用。你该怎么办?
你可以像这样执行
git-diff G I
,但这也会显示主分支中的更改,这对你没有任何帮助。你也可以将旧引用基于当前主分支进行变基,然后再进行差异比较。这可能有所帮助,但也可能会产生很多冲突,这可能会使重新审查整个分支更容易。
我已经尝试过diffing patches。
diff <(git-diff c3af8fc5...7ccc4b49) <(git-diff 4dfdabdd...301a443c)
它帮助我将注意力集中在某个地方,但很粗糙。
您知道任何更好的、更本地的解决这个问题的方法吗?谢谢。
编辑:我刚刚发现了interdiff,它可以更好地比较两个差异。
interdiff <(git-diff -U100 c3af8fc5...7ccc4b49) <(git-diff -U100 4dfdabdd...301a443c) | colordiff
但是,它仍然缺乏Git可能提供的上下文——那么...有更好的选择吗?
c3af8fc5...7ccc4b49
在git diff
中表示应找到c3af8fc5
和7ccc4b49
的合并基础,然后将该提交记录(无论是什么)与7ccc4b49
进行比较。这可能不是您想要的结果。请注意,git diff X..Y
(两个点与三个点)的含义完全相同,而git diff X Y
,git diff X...Y
具有此特殊的仅差异含义。 - torekG
和I
。你是想暗示从图表中看出主分支当前在E
吗?如果是这样,那么你想要理解的F-G
和H-I
之间的关系是什么?(即为什么在标题中说“变基前后”?) - LightCC