如何让git diff
只显示两个提交之间的差异,而排除中间的其他提交?
询问两个提交之间的差异而不包括中间的提交,是没有意义的。提交只是版本库内容的快照;询问两个提交之间的差异必然包括它们。那么问题来了,你真正要找的是什么?
正如William所建议的,偷梁换柱可以给你一个基于另一个提交的delta。就是说。
$ git checkout 012345
$ git cherry-pick -n abcdef
$ git diff --cached
这就是:{{5911461}}将 "abcdef "的提交与它的直系祖先进行比较,然后在 "012345 "的基础上应用这个差值。然后显示这个新的差异--唯一的变化是上下文来自'012345'而不是'abcdef'的直接祖先。当然,你可能会得到冲突等,所以在大多数情况下这不是一个非常有用的过程。
如果你只是对abcdef本身感兴趣,你可以这样做。
$ git log -u -1 abcdef
这是将abcdef与它的直系祖先单独进行比较,通常是你想要的结果。
当然,还有
$ git diff 012345..abcdef
给你提供了这两个提交之间的所有差异。
这将有助于更好地了解你想要实现的目标--正如我提到的,要求提供两个提交之间的差异而不提供中间的内容实际上是没有意义的。