什么是' git log branchA branchB'做?

时间:2014-10-05 01:03:30

标签: git

我看到了一个截屏,加里伯纳德跑了git log master origin/master我无法弄清楚那是做什么的。 log给出两个这样的分支时会做什么?我过去曾用它来显示正在开发但尚未在master(git log development ^master)上提交的提交,并给出了一系列修订版本(git log oldref..newref),但这似乎是是不同的东西。

我也没有在文档中看到任何提及。有什么帮助吗?

2 个答案:

答案 0 :(得分:3)

请参阅git-rev-parse(1)中的指定范围。基本上,您使用任意数量的正引用,否定引用和范围来指定一组提交。

答案 1 :(得分:2)

TL; DR

git log <ref1> <ref2>

<ref1>的祖先和<ref2>的祖先的 union 中的所有提交打印日志条目;换句话说,所有可以从<ref1><ref2>或两者 到达的提交。

此语法自然会扩展到两个以上的版本。

在手册页中找到该信息的位置

git-log手册页中查找描述部分:

  

该命令采用适用于git rev-list命令的选项   控制所显示的内容以及如何[...]

这将引导您进入git-rev-list手册页。在后者的 Description 部分下,您将找到以下段落,该段落应该清除:

  

通过跟踪来自的父链接可以访问的列表提交   给定提交,但排除可从中获取的提交   在他们面前以^给出的一个人。输出反向给出   按时间顺序排列。

     

您可以将此视为设置操作。根据命令发出的命令   line形成一组可从其中任何一个访问的提交,以及   然后可以从前面^给出的任何一个提交到达   从该集中减去。剩下的提交就是出来的   在命令的输出中。 [...]

(我的重点)

所以你有它:当你传递一个(空格分隔的)git log引用列表时,你得到了至少一个指定引用可以访问的所有提交的日志。

一个例子

作为示例(取自gitrevisons man page),如果您的仓库如下所示

   J
    \
I -- F -- C 
      \    \
  E -- B -- A
      /
H -- D
    /
   G

的输出
git log D F

将包含可以从提交DF或两者提交的所有提交的日志条目,即提交GHIJDF