一些 Git 命令采用提交范围,一种有效的语法是用两个点 ..
分隔两个提交名称,另一种语法使用三个点 ...
.
两者有什么区别?
最佳答案
在 Git 日志中使用提交范围
当您使用像 ..
这样的提交范围时和 ...
与 git log
,它们的区别在于,对于分支A和B,
git log A..B
将向您显示所有 B 拥有而 A 没有的提交,而
git log A...B
将向您显示两者 A 有和 B 没有的提交,以及 B 有而 A 没有的提交,或其他换句话说,它将过滤掉 A 和 B 共享的所有提交,因此只显示他们不共享的提交。
使用维恩图和提交树进行可视化
这是 git log A..B
的可视化表示.分支 B 包含但 A 中不存在的提交是提交范围返回的内容,在维恩图中以红色突出显示,在提交树中以蓝色圈出:
这些是 git log A...B
的图表.请注意,命令不会返回由两个分支共享的提交:
制作三点提交范围 ...
更有用
您可以将三点提交范围设为 ...
使用 --left-right
在日志命令中更有用显示哪些提交属于哪个分支的选项:
$ git log --oneline --decorate --left-right --graph master...origin/master
< 1794bee (HEAD, master) Derp some more
> 6e6ce69 (origin/master, origin/HEAD) Add hello.txt
在上面的输出中,您将看到属于 master
的提交以 <
为前缀,而属于 origin/master
的提交以 >
为前缀.
在 Git Diff 中使用提交范围
有一天我可能会添加我自己的解释,说明提交范围如何与 git diff
一起使用, 但现在,您可能想查看 What are the differences between double-dot ".." and triple-dot "..." in Git diff commit ranges? .
另见
关于git - Git 提交范围中的双点 ".."和三点 "..."有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/462974/