如何了解交叉Git日志?

时间:2019-06-17 22:25:48

标签: git github git-log

谁能告诉我0ab11dd和bd7278a之间发生了什么? 还有27ac7b7和95b2c48之间? 为什么这些提交中有交叉?

* xxxxxxx (HEAD -> f-1, origin/f-1) 
* xxxxxxx fix merge conflicts
*   13751d5 Merge branch 'master' into feature/DP-1
|\  
| *   f3efc9d (origin/master, origin/HEAD, master) Merge pull request #9 from fix
| |\  
| | * 83c0b15 (origin/fix) 
| |/  
| *   be24ce6 Merge pull request 
| |\  
| | *   0ab11dd merge
| | |\  
| | |/  
| |/|   
| * |   bd7278a Merge pull request 
| |\ \  
| | * | 14399e2 
| | | * xxxxxxx  
| | | * xxxxxxx 
| | | *   27ac7b7 merge
| | | |\  
| | |_|/  
| |/| |   
| | | * 95b2c48 (origin/f-3) 
| | | * xxxxxxx 

尤其是这个

| | |_|/  
| |/| |   

为什么有out分支但没有提交?

2 个答案:

答案 0 :(得分:1)

关于“分频器”

这只是图形工具表示合并的方式:从右到左(左边的一个是“接收”合并的一个)。因此,当必须将一个提交系列(而不是说可能引起混淆的分支)合并到另一个当前恰好在其右侧以图形方式表示的分支时,该工具会画一条线,是的,与其他线交叉以使其从右侧 到合并提交的结点。

所以这只是一个图形约定。


关于竖线 (注释后)

在当前指向的提交处将分支(可选地,使用--decorate添加)添加到图形中,但是请不要忘记您的repo树实际上并不需要它们。这些提交系列就是您的树的主体,“分支”实际上只是技巧,这就是隐喻分解的地方...


(我向您保证这是一个技术含量很低的表示,...但是我们也要承认,翔实的提交消息会让事情变得更清晰。)

答案 1 :(得分:1)

这将是一个注释,但没有空间,需要格式化。

此部分:

| | | *   27ac7b7 merge
| | | |\  
| | |_|/  
| |/| |   
| | | * 95b2c48 (origin/f-3) 
| | | * xxxxxxx 

不完整。如果继续浏览该图,它最终可能会这样解决自己:

| | | * xxxxxxx 
| | |/
| | * yyyyyyy
| |/
| * zzzzzzz
|/
* sssssss

(但我们无法真正猜到,而且可能比这复杂得多)。

有了足够的附加图形,我们可以进一步介绍提交27ac7b7。目前,我们所知道的是这是具有两个父级的合并,并且第一个父级是95b2c48(标记为origin/f-3)。我们在这里看不到第二个父提交的哈希ID,但是沿着图线,您最终将到达第二个父提交。

(您要求的第一个提交-0ab11dd-是与父项xxxxxxx的合并提交,是沿着该行的直接向下行执行并提交bd7278a的结果,跟随最初向右下降的线的结果,然后立即反转并向下交叉到bd7278agit log --graph通过向右拉出非第一链接来强调亲子关系的第一/非第一关系。一些图形绘制方法(包括我通常使用的方法)根本没有区别,何时以及是否有用是另一个主题,但是请参见--first-parent的{​​{1}}选项。)< / p>