在Git diff提交范围中双点“..”和三点“…”之间有什么区别?

以下命令之间的区别是什么?:

git diff foo master   # a 
git diff foo..master  # b
git diff foo...master # c

The diff manual谈论:

Comparing branches

06001

  1. Changes between the tips of the topic and the master branches.
  2. Same as above.
  3. Changes that occurred on the master branch since when the topic branch was started off it.

但对我来说并不完全清楚。

由于我已经创建了这些图像,我认为可能值得在另一个答案中使用它们,虽然对..(dot-dot)和…(dot-dot-dot)之间的区别的描述基本上是相同的如manojlds’s answer

命令git diff通常只显示提交图中两个点之间的树状态之间的差异。 git diff中的..和…符号具有以下含义:

换句话说,git diff foo..bar和git diff foo bar完全一样;两者都会显示两个分支foo和bar的提示之间的区别。另一方面,git diff foo … bar将显示两个分支的“合并基础”和条形提示的区别。 “合并基础”通常是这两个分支之间共同的最后一个提交,因此这个命令将显示您的工作在bar上引入的更改,而忽略了在foo上完成的所有内容。

这是所有你需要知道的..和…符号在git diff。然而…

…这里的一个常见的混乱来源是..和…表示微妙的不同的东西,当用于一个命令,如git log,期望一组提交作为一个或多个参数。 (这些命令最终使用git rev-list来解析来自它们的参数的提交列表。)

..和… for git log的含义可以如下图所示:

所以,git rev-list foo..bar显示分支栏上的所有内容,这也不是分支foo。另一方面,git rev-list foo … bar显示在foo或bar中的所有提交,但不是两者。第三个图表显示,如果你列出两个分支,你会得到在其中一个或两个提交。

好吧,我发现所有有点混乱,反正,我认为提交图图表帮助:)

¹我只说“通常”,因为在解决合并冲突时,例如,git diff会显示一个三向合并。

http://stackoverflow.com/questions/7251477/what-are-the-differences-between-double-dot-and-triple-dot-in-git-dif

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:在Git diff提交范围中双点“..”和三点“…”之间有什么区别?