为什么diff与^!合并提交反转?父母表示法
问题描述:
为什么^!
会颠倒合并提交的差异?为什么diff与^!合并提交反转?父母表示法
从Other^Parent Shorthand Notations
的
r1^!
符号包括提交r1
但不包括其所有的父母。 这个表示法本身表示单个提交r1
。
这正确显示了我对不合并提交的区别。
$ git diff <commit>^!
但是对于合并提交,差异是相反的。
$ git diff <merge-commit>^!
我得到了类似的结果difftool
。
为什么这么说?
答
简单的答案是它是一个错误。
通过使用git rev-parse
可以看到git diff
有效看到的内容。下面是适用于普通的^!
后缀提交:
$ git rev-parse 699d47e1d^!
699d47e1d2777ad1c2a867671e35daa821769f29
^4aaf5b0b21ac1fc294066593ac5243b3eaff897b
,并在这里将它应用到一个合并提交:
$ git rev-parse 117ddefdb^!
117ddefdb4dfd9b40ae60967a7327754d8ce7a87
^5e5a7cd9327cdbe6b50b5a0ead9b2ee5fb30789c
^699d47e1d2777ad1c2a867671e35daa821769f29
当您提供压缩的符号来git diff
,Git会使其通过相同的扩张代码git rev-parse
使用。然而,git diff
不是将其打印出来,而是试图回溯解释结果。如果有两个提交散列(具有各种标志),它将在两个命名的提交之间运行差异。如果有三个或更多,它会做一些不同的事情。
有没有解决的eta?只是好奇。 – hIpPy
我不认为任何人都在意足以使这项工作。在另一方面,他们可能会认为这是一个特点:如果他们把我的修为其他问题,你风与合并差异,你用'混帐show'得到相同的一个。 – torek
老实说,我认为'commit ^!'是完美的,至少可以从文档中区分出合并。 'commit〜commit'用于提交和合并,但我觉得合并的直观性较差。 – hIpPy