我应该如何谷歌搜索 git 的 .. 语法?

我应该如何谷歌搜索 git 的 .. 语法?

我想查找 Git..语法的文档,例如,在这样的命令中,git log master..列出了我分支中的提交,而不是 master 中的提交。我想知道他们如何措辞文档,以便我可以准确而简洁地向同事解释。

以下是我尝试过的搜索

结果都很糟糕。有没有更好的方法来搜索有关特定语言标点语法使用的文档,比如 Git 的..

答案1

我想查阅 Git..语法的文档

例如,在如下命令中使用git log master..

他们叫双点 ..三点 ...范围规格。

你还会看到它们被称为范围语法或者点语法

搜索http://www.google.com对于其中任何一个术语,都会返回有用的结果。


简短的摘要

git log A..B (两个点)

虽然这种语法看起来像是从 A 到 B 的提交“范围”,但它实际上是一种简写git log ^A B

  • 显示从 B 可到达的所有提交;包括 B 本身
  • 排除那些可从 A 到达的;A 本身被排除

因此给出以下历史记录(左边是最早的提交,右边是最新的提交):

*--*--*--A--*--*--*--B

git log A..B将显示 A 右侧的所有提交。

请注意git log A..相当于git log A..HEAD

git log A...B(三个点)

git-rev-list 手册页将其描述为“对称差异”的特殊符号。

它相当于git log A B --not $(git merge-base --all A B)

用简单的英语来说,这意味着“所有可从 A 或 B 到达但不能从两者到达的提交。

来源Git“范围”或“点”语法


详细摘要

双点

最常见的范围指定是双点语法。这基本上要求 Git 解析可从一个提交访问但不可从另一个提交访问的一系列提交。例如,假设您有一个提交历史记录,如下所示:

在此处输入图片描述

您想查看实验分支中尚未合并到主分支的内容。您可以让 Git 向您显示带有 master..experiment 的提交日志 - 这意味着“实验可访问但主分支无法访问的所有提交”。为了在这些示例中简洁明了,我将使用图表中提交对象的字母代替实际日志输出,其显示顺序如下:

$ git log master..experiment
D
C

另一方面,如果你想要看到相反的情况 - 所有在 master 中但不在 experiment 中的提交 - 你可以反转分支名称。experiment..master 向你显示 master 中无法从 experiment 访问的所有内容:

$ git log experiment..master
F
E

如果您想要使实验分支保持最新并预览您将要合并的内容,这将非常有用。此语法的另一个非常常见的用途是查看您将要推送到远程的内容:

$ git log origin/master..HEAD

此命令显示当前分支中所有不存在于 origin 远程 master 分支中的提交。如果您运行 git push 并且当前分支正在跟踪 origin/master,则 git log origin/master..HEAD 列出的提交将传输到服务器。您还可以省略语法的一侧,让 Git 假定 HEAD。例如,您可以通过输入 git log origin/master.. 获得与上例相同的结果 - 如果缺少一侧,Git 将替换为 HEAD。

多点

双点语法是一种很有用的简写;但也许你想指定两个以上的分支来指示你的修订,比如查看你当前所在分支中没有的几个分支中的提交。Git 允许你通过在你不想看到可到达提交的任何引用前使用 ^ 字符或 --not 来执行此操作。因此,这三个命令是等效的:

$ git log refA..refB
$ git log ^refA refB
$ git log refB --not refA

这很好,因为使用此语法,您可以在查询中指定两个以上的引用,而使用双点语法则无法做到这一点。例如,如果您想查看可从 refA 或 refB 访问但不能从 refC 访问的所有提交,您可以输入以下其中一个:

$ git log refA refB ^refC
$ git log refA refB --not refC

这使得修订查询系统非常强大,可以帮助您了解分支中的内容。

三点

最后一个主要的范围选择语法是三点语法,它指定所有可以通过两个引用之一但不能同时通过它们到达的提交。回顾以下示例提交历史记录:

在此处输入图片描述

如果你想查看 master 或 experiment 中的内容,但不想查看任何常见参考资料,你可以运行

$ git log master...experiment
F
E
D
C

同样,这会为您提供正常的日志输出,但仅显示这四次提交的提交信息,按照传统的提交日期顺序出现。

在这种情况下,与 log 命令一起使用的常见开关是 --left-right,它显示每个提交位于范围的哪一侧。这有助于使数据更有用:

$ git log --left-right master...experiment
< F
< E
> D
> C

有了这些工具,您可以更轻松地让 Git 知道您想要检查哪些提交。

来源Git 工具 - 修订选择

相关内容