Git diff分支在分配之前和之后忽略大师的变化
我希望能够看到分支的变化,因为我上次审查它,但忽略了在此期间发生的主变更。Git diff分支在分配之前和之后忽略大师的变化
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)
它帮助我的地方我的注意力,但它是非常粗糙的。
你知道有更好的,更原始的方法来解决这个问题吗?谢谢。
编辑:我刚刚discovered interdiff,这使得版本比较2点的diff好得多
interdiff <(git-diff -U100 c3af8fc5...7ccc4b49) <(git-diff -U100 4dfdabdd...301a443c) | colordiff
但尽管如此,它缺乏的git可能提供上下文 - 所以......有什么好?
最简单的方法可能是:视觉上比较的diff
火了两个差异的观众,当你想看到从基期的修订随之而来的两种观点比较:
# view the "old" patch :
git difftool -d B G
# view the "new" patch :
git difftool -d H I
您只能关注修改过的文件:
git diff --name-only B G
将列出修改的名称ED B和G之间文件
您可以只针对修改后的文件使用,例如:
# compare G and I,
# looking only at files modified between B and G, or between E and I :
git difftool -d G I -- $(
git diff --name-only B G; git diff --name-only E I
)
您也可以尝试在本地机器上的E
上衍合B..G
,如果它不” t触发太多的冲突,然后看差异:
git checkout G
# as an option, you can make a temporary branch :
git checkout -b wip/G
# rebase on the tip of 'master' :
git rebase E
# look at the diff between "rebased G" and I
git difftool -d wip/G I
Git只能显示两个提交之间的差异。这听起来像你想要差异的差异,所以这不是Git可以做的事情。 – poke
我知道,但git具有更改的上下文,它可以巧妙地生成两个diff的差异。 –
但是,甚至会是什么样子?我甚至无法直观地想到它。 – poke