比较时,Git diff似乎会返回不同的变化:
git diff origin/master ... origin/branch
git diff origin/master...origin/branch
两者有什么区别?对于那些在第一个命令中看不到差异的人,...
由空格缓冲。
答案 0 :(得分:4)
通常,“点”符号用于指定范围和完整文档,可在git log --help
“指定修订”部分中找到,主要用于git log
等列表。
简单地说,你有两个分支从提交a:
开始a - b - c (master)
\d - e (topic)
git log master..topic
会显示可以从主题访问但无法从主服务器访问的提交,实际上是“d”和“e”
git log topic..master
将显示可从主设备访问但无法从主题访问的提交,实际上是“b”和“c”
现在git log master...topic
(注意三个点)将显示所有可从主要或主题到达而不是从两者都可以进行的提交,实际上是b,c,d和e
差异虽然是两个历史点,但不是范围,例如符号
git diff topic master
或
git diff topic..master
应该返回相同的结果,即指定分支的尖端之间的差异 三点符号
git diff topic...master
应该显示自主题分支分离以来在master中发生的更改
正如Jan指出的那样,用空格包围的三个点的符号被git理解为当HEAD指向同一个提交时,分支尖端之间的差异(如无点或两个点)感兴趣的分支。如果HEAD既不是主题也不是主人,它将导致三方差异。
希望有所帮助!
答案 1 :(得分:2)
正确的语法没有空格,并且从共同的祖先到正确的分支。
对于空格,它应该是一个错误,因为...
既不是修订版也不是路径,但是参数解析器将它作为HEAD的同义词。可能是事实的副作用,...branch
表示HEAD...branch
和branch...
表示branch...HEAD
。结合git diff可以获取任意数量的参数并在给出超过2个不同参数时产生n路差异的事实。当git diff A ... B
和A
都指向与B
相同的版本时,我已经检查过,确实HEAD
会产生三向差异。