我担心答案是否定的.
对此的ratonale是,无论你如何在调用时指定参数git diff,它总是只考虑两个实体(blob或树(大多数时候从引用它们的提交中推断)).换句话说,这是设计:git diff考虑单独的对象,不进行任何历史遍历.引用git diff手册页:
有关拼写方法的更完整列表
<commit>,请参阅中的"指定修订"部分gitrevisions(7).但是,"diff"是关于比较两个端点, 而不是范围,而范围符号("<commit>..<commit>"和"<commit>...<commit>")并不表示在"指定范围"部分中定义的范围gitrevisions(7).
另一方面,使用合适的外壳,您应该能够自己做这件事.说,给定两次提交,rev1并且rev2,您可以使用
git-diff3() {
local rev1="$1" rev2="$2"
diff3 <(git show "$rev1") \
<(git show $(git merge-base "$rev1" "$rev2")) \
<(git show "$rev2")
}
Run Code Online (Sandbox Code Playgroud)
在了解<(...)(例如bash)的shell中.
这个功能需要按摩才能使它更有用/更不易碎,但我希望你能得到这个想法.
| 归档时间: |
|
| 查看次数: |
546 次 |
| 最近记录: |