Another 所以。问题显示如何配置git
使用三路差异来解决合并冲突。
是否可以将这种三向样式设置为标准 diff 操作的默认值?如果我请求存在公共根(不仅仅是版本之一)的版本之间的差异,则公共根的更改将显示在差异中。
恐怕答案是否定的。
这样做的理由是,无论您在调用时如何指定参数git diff
,它总是只考虑两个实体(blob 或树(大多数时候从引用它们的提交推断))。
换句话说,这是设计使然的:git diff
考虑单独的对象并且不进行任何历史遍历。引用git diff
手册页:
有关拼写方法的更完整列表<commit>
,参见“指定修订”
部分在gitrevisions(7)
。然而,“diff”是关于比较两个端点,不是范围,以及范围符号 ("<commit>..<commit>
" and
"<commit>...<commit>
“)并不表示“指定范围”中定义的范围
部分在gitrevisions(7)
.
另一方面,有了合适的 shell,您应该能够自己做那件事。假设有两次提交,rev1
and rev2
,你可以使用
git-diff3() {
local rev1="$1" rev2="$2"
diff3 <(git show "$rev1") \
<(git show $(git merge-base "$rev1" "$rev2")) \
<(git show "$rev2")
}
在一个能够理解的 shell 中<(...)
(e.g. bash
).
此功能需要按摩以使其更有用/不那么脆弱。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)