【问题标题】:How to understand crossover Git log?如何理解跨界 Git 日志?
【发布时间】:2019-06-17 22:25:48
【问题描述】:

谁能告诉我 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分支却没有commit?

【问题讨论】:

  • 0ab11dd27ac7b7 实际上是合并提交吗? (作为旁注,this 是提交消息重要的原因)
  • @RomainValeri 是的,他们是

标签: git github git-log


【解决方案1】:

关于“跨界”

这正是图形工具表示合并的方式:从右到左(左边的那个是“接收”合并的那个)。因此,当必须将一个提交系列(而不是在这里可能令人困惑的分支)合并到另一个恰好当前以图形方式表示在其右侧的提交系列时,该工具会绘制一条线,是的,与其他的线交叉以使其从右侧到合并提交的连接点。

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


关于竖线 (在cmets之后)

在它们当前指向的提交中,分支(可选地,使用 --decorate)被添加到图表中,但不要忘记你的 repo 树实际上并不需要它们中的任何一个。这些提交系列是你树的主体,其中“分支”实际上只是提示,这就是隐喻有点崩溃的地方......


(我承认这是一种技术含量非常低的表示,......但我们也承认,信息丰富的提交消息会让事情变得更清晰。)

【讨论】:

  • 所以一个“垂直”线不一定意味着一个分支?那我怎么知道总共有多少个分支?颜色是否表明有关分支的任何信息?
  • @wwwwan 颜色有助于区分本地分支(绿色)、远程跟踪分支(红色)和标签(黄色)。要检查您的分支列表,请尝试git branch,即使用-a,不仅可以查看本地分支,还可以查看远程跟踪分支。
  • “分支(可选地,使用--decorate)在它们当前指向的提交时添加到图表中”。那么同一分支(合并除外)中的提交会在同一垂直线上吗?
  • @wwwwan 这是一个很深的误解(但请放心,你不是唯一一个与之抗争的人,这是要掌握的关键点)。没有提交是“在”任何分支上的。分支是一次性的,提交是永久的。一个分支只命名一个提交。从 this 提交,您可以追溯到第一个初始提交。提交通过许多(或零个)分支被称为可达
  • @RomainValeri:我喜欢这样说,提交是“开启”许多个分支,但它们“开启”的分支集——或包含它们,这是一种更好的表达方式——当你修改分支标签时改变。当标签四处移动时,提交保持不变(如您所说),因此您提到了可达性问题。
【解决方案2】:

这是一条评论,但没有空间,需要格式化。

此时的部分:

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

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

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

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

有了足够的额外图表,我们可以更多地了解提交27ac7b7。目前我们只知道这是一个合并,有两个父级,第一个父级是95b2c48(标记为origin/f-3)。我们在这里看不到第二个父提交的哈希 ID,但是按照图表线,您最终会到达第二个父提交。

(您询问的第一个提交-0ab11dd-是与父级xxxxxxx 的合并提交,是遵循该提交的直接向下行的结果,以及提交bd7278a,是遵循该行的结果最初向右下降然后立即反转并向下交叉到bd7278agit log --graph 通过向右绘制非第一链接来强调亲子关系的第一/非第一关系。一些图形绘制方法,包括我通常使用的方法使用,根本不做区分。区分何时以及是否有用是另一个话题,但请参阅git log--first-parent 选项。)

【讨论】:

    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 2012-10-30
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    相关资源
    最近更新 更多