如何理解&#34; <自>&#34;在git格式 - 补丁手册?

时间:2017-08-02 09:43:00

标签: git

我正在阅读man的{​​{1}}页面:

  

有两种方法可以指定要操作的提交。

     
      
  1. 单个提交git format-patch指定通往当前分支的提示的提交,这些提交不在导致<since>输出的历史记录中。
  2.         

    ...

我很难理解&#34; <since>&#34;。我认为应该是&#34; ...历史上 ...&#34;。

1 个答案:

答案 0 :(得分:1)

措辞可能令人困惑,因为英语解析很棘手,但这就是它的含义:

  

单个提交<since>指定

     
      
  1. 提交当前分支的提示
  2.         

    不在

    中      
        
    1. 导致<since>
    2. 的历史记录         

      要输出。

以一种更容易理解的方式,以图形绘制开始:

______________________________

...--o--o--<since>--o--o--o--o   <-- currentbranch (HEAD)
__________________

我编号为2的部分导致<since> 的历史记录是带下划线的部分。我编号为1的部分,通向当前分支的提示的提交,是带有上划线的部分。整个表达式相当于&#34;带衬垫的集合,减去带下划线的集合&#34;,在 - 和排除 - <since>之后离开提交,最多为包括 HEAD

这也是git rev-list(因此git log)在您撰写时的含义:

<since>..HEAD

请注意,如果历史记录有分支,结果可能会有点令人惊讶:

...--o--o--*--*--*--*---*   <-- currentbranch (HEAD)
         \             /
          o--<since>--*

在这种情况下,<since>..currentbranch包含的提交是标有*的提交。这对git format-patch来说是特殊:当您使用拼写为<since>..currentbranch或{{1的语法时,它适用于所有基于提交图的操作}或<since>..HEAD(这三个意思都是一样的。)

(可能令人困惑的是,<since>.. 没有执行基于提交图的操作,因此如果您尝试根据git diff的行为来理解,那么将赢得看到这种效果。大多数人的一个命令使用了很多看到这种效果{{1} }本身 - 但由于git diff默认情况下不会绘制图形,因此不清楚它是什么。为了使其显而易见,请从/ DOG获取帮助:{{1}对于 D ecorate O neline G raph,日志或事情总是更有趣: - )