如何阅读Git日志图表

115
在Git社区书籍中,它说:
另一个有趣的事情是使用'--graph'选项可视化提交图,像这样:
$ git log --pretty=format:'%h : %s' --graph
* 2d3acf9 : ignore errors from SIGCHLD on trap
*   5e3ee11 : Merge branch 'master' of git://github.com/dustin/grit
|\
| * 420eac9 : Added a method for getting the current branch.
* | 30e367c : timeout code and tests
* | 5a09431 : add timeout protection to grit
* | e1193f8 : support for heads with slashes in them
|/
* d6016bc : require time for xmlschema

这将提供一个相当不错的提交历史线的ASCII表示。
我应该如何阅读这个图表?420eac9与其他部分有什么不同之处?
2个回答

149

星号表示提交过的地方:

e1193f85a0943130e367c被提交到了左侧分支(在右侧分支上产生了一个|),而420eac9被提交到了右侧分支(在左侧分支上产生了一个|)。这就是420eac9与其他提交的不同之处:它是唯一提交到右侧分支的提交。

为完整起见:

  • d6016bc是分支点
  • 5e3ee11是合并提交
  • 2d3acf9是合并后的第一个提交

4
我对图表中的提交时间有个问题。在图表中,“420eac9”显示在“30e367c”、“5a09431”和“e1193f8”的上方。这是否总是意味着“420eac9”是在其他三个之后提交的,还是分支上的提交被分组在一起,它们在不同分支上出现的顺序并没有时间相关性? - Parag
6
@Parag:一个分支中的提交被归为一组。420eac9 是在 e1193f8 分支的第一次提交之后完成的,但不一定是在 30e367c 之后完成的。 - eckes
1
@eckes,左侧(最左侧)的 | 符号是我当前所在分支的表示吗? - J86
@J86 如果你切换到另一个分支并运行相同的命令,则会得到相同的输出,因此图表中没有对你当前所在分支的引用。 - onofricamila
@eckes 链接源代码。 - young_souvlaki
显示剩余2条评论

22

420eac9在与下面的3个提交“不同”的分支上。这些分支在d6016bc之后分叉,然后在5e3ee11中合并。


6
可以用比“分支分叉”更好的措辞来表达,即从“d6016bc”创建了第二个分支,并与原始分支并行开发。 - Ilkka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接