一些 Git 命令采用提交范围,一种有效的语法是用两个点分隔两个提交名称..,另一种语法使用三个点...。
..
...
两者有什么区别?
这取决于您使用的是log命令还是diff命令。在这种log情况下,它在man git-rev-parse文档中:
log
diff
man git-rev-parse
要从提交中排除可访问的提交,使用前缀 ^ 表示法。例如 ^r1 r2 表示可从 r2 访问的提交,但不包括可从 r1 访问的提交。 这个集合操作经常出现,以至于它有一个简写形式。当您有两个提交 r1 和 r2(根据上面指定修订中解释的语法命名)时,您可以请求可从 r2 访问的提交,不包括可通过“^r1 r2”从 r1 访问的提交,它可以写成“r1..r2”。 类似的符号“r1…r2”称为 r1 和 r2 的对称差,定义为“r1 r2 –not $(git merge-base –all r1 r2)”。它是可以从 r1 或 r2 之一但不能从两者中访问的一组提交。
要从提交中排除可访问的提交,使用前缀 ^ 表示法。例如 ^r1 r2 表示可从 r2 访问的提交,但不包括可从 r1 访问的提交。
这个集合操作经常出现,以至于它有一个简写形式。当您有两个提交 r1 和 r2(根据上面指定修订中解释的语法命名)时,您可以请求可从 r2 访问的提交,不包括可通过“^r1 r2”从 r1 访问的提交,它可以写成“r1..r2”。
类似的符号“r1…r2”称为 r1 和 r2 的对称差,定义为“r1 r2 –not $(git merge-base –all r1 r2)”。它是可以从 r1 或 r2 之一但不能从两者中访问的一组提交。
这基本上意味着您将获得两个分支中的任何一个中的所有提交,但不是两个分支中的所有提交。
在这种diff情况下,它在man git-diff文档中:
man git-diff
git diff [--options] <commit>...<commit> [--] [<path>...] This form is to view the changes on the branch containing and up to the second , starting at a common ancestor of both . “git diff A…B” is equivalent to “git diff $(git-merge-base A B) B”. You can omit any one of , which has the same effect as using HEAD instead.
git diff [--options] <commit>...<commit> [--] [<path>...] This form is to view the changes on the branch containing and up
to the second , starting at a common ancestor of both . “git diff A…B” is equivalent to “git diff $(git-merge-base A B) B”. You can omit any one of , which has the same effect as using HEAD instead.
这有点模糊。基本上,这意味着它仅显示该分支与另一个分支相比的差异:它使用您给它的第一个提交查找最后一个常见提交,然后将第二个提交与该提交进行比较。与此分支相比,这是查看该分支中进行了哪些更改的简单方法,而无需仅注意此分支中的更改。
..稍微简单一些:在这种情况git-diff下,它与 a 相同git diff A B,只是将 A 与 B 进行比较。在这种log情况下,它显示了 B 中但不在 A 中的所有提交。
git-diff
git diff A B