我需要看到(1)从HEAD到ec9cb4106的日志消息或(2)从HEAD到ec9cb4106的汇总差异.该修正选择页面没有出现讨论它,我不能让git的接受明显的选择:
$ git log HEAD .. ec9cb4106
fatal: ec9cb4106: no such path in the working tree.
Use 'git <command> -- <path>...' to specify paths that do not exist locally.
$ git diff HEAD .. ec9cb4106
fatal: ec9cb4106: no such path in the working tree.
Use 'git <command> -- <path>...' to specify paths that do not exist locally.
Run Code Online (Sandbox Code Playgroud)
我正在尝试,X .. Y因为这是git在汇总更新时显示的内容,并且可以将其提供给git diff.
如何查看(1)范围内的日志消息,或(2)范围的汇总差异?
格式化为答案(并且更关心订单):您希望git log ec9cb4106..HEAD在这里(根据评论),即包含可从中获取的提交HEAD但排除可从ec9cb4106(包括ec9cb4106其自身)到达的项目.
请注意,在两个点之前或之后没有空格.
双点表示法是包含和排除的简写.
通常,命令喜欢git log并git rev-list选择提交"with ancestry",因为它是:接受给定的提交并找到它的父级,父级的父级等,并访问每个这样的提交.这可能是一组非常大的提交,所以我们想要一些方法来修剪提交图中不感兴趣的部分.
对于这一点,git log并且git rev-list可以做集合操作.通常,命名多个提交会使您获得联合.例如,考虑如下图:
C--D <-- branch1
/
A--B
\
E--F <-- branch2
Run Code Online (Sandbox Code Playgroud)
命名branch1选择提交D,其中,通过分球,达到承诺C,B和A,因此显示了这四个提交.
命名branch2选择提交F,到达提交E,B和A,因此显示那四个提交.
命名这两个分支同时选择D和F,让你看到所有六个提交.请注意,您没有看到B和A两次:首先完成选择,收集要显示的所有提交,然后对提交进行排序和显示(每次提交一次).
要删除图形的某些部分,您可以告诉revision-walker从某个提交开始并删除该提交及其所有祖先.这个的外部语法是前缀帽子^:
git log branch1 ^branch2
Run Code Online (Sandbox Code Playgroud)
这表示"选择可以到达的所有内容branch1,然后丢弃可以从中获取的所有内容branch2".在这种情况下,那将选择D,C,B和A; 然后弃F,E,B和A. F和E是不是在原来的设定,但是这不是一个问题:你可以减去离开那个不存在的提交.因此,不需要将否定的提交实际存在于正选择的提交的祖先集合中.
Git为这些提供了一套相当荒谬的大量语法,所以除此之外^X Y,你还可以编写--not X --not Y.两个人--not的原因是--not 坚持:--not X Y手段^X ^Y.第二个--not取消了第一个.
(两位点语法)X..Y是^X Y(或等效地)(Y ^X)的缩写.除了--not持久化之外,使用较长语法时顺序无关紧要,但对于双点语法很重要.
请注意,特别git diff处理双点语法. 它没有在那里选择一系列提交.(相对较早地git diff检查文字字符串的C源代码..,在将参数传递给修订版解析代码之前删除它,如果它存在的话.)
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |