如何理解交叉Git日志?
How to understand crossover 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分支却没有commit?
关于"crossovers"
这正是图形工具表示合并的方式:从右到左(左边的那个是 "receiving" 合并的那个)。因此,当必须将提交系列(而不是在这里可能会造成混淆的分支)合并到另一个恰好当前以图形方式表示在其右侧的提交系列时,该工具会绘制一条线,是的,该线与其他线交叉以使其连接到合并提交从右边。
所以这只是一个图形约定。
关于竖线 (评论后)
分支(可选地,使用 --decorate)在它们当前指向的提交处添加到图中,但不要忘记你的 repo 树实际上并不需要它们中的任何一个。这些提交系列是你的树的主体,其中 "branches" 实际上只是提示,这就是比喻有点崩溃的地方......
(我承认这是一个非常 low-tech 的表示,...但我们也承认,信息丰富的提交消息会使事情变得更加清晰。)
这将是一条评论,但没有空间,需要格式化。
此时的部分:
| | | * 27ac7b7 merge
| | | |\
| | |_|/
| |/| |
| | | * 95b2c48 (origin/f-3)
| | | * xxxxxxx
不完整。如果你继续浏览图表,它最终可能会像这样自行解决:
| | | * xxxxxxx
| | |/
| | * yyyyyyy
| |/
| * zzzzzzz
|/
* sssssss
(但我们真的猜不出来,可能比那复杂得多)。
有了足够的附加图表,我们可以对提交 27ac7b7
说更多。目前我们所知道的是它是一个合并,有两个父级,第一个父级是 95b2c48
(标记为 origin/f-3
)。我们在这里看不到第二个父提交的哈希 ID,但是沿着图形线,您最终会到达第二个父提交。
(您询问的第一个提交——0ab11dd
——是与父 xxxxxxx
的合并提交,是跟随 direct-downward 行到该提交的结果,并提交 bd7278a
,沿着最初向右下降然后立即反转并向下交叉到 bd7278a
的线的结果。git log --graph
通过绘制 not-first 强调 first/not-first 亲子关系向右链接。一些图形绘制方法,包括我通常使用的方法,根本不区分。区分何时以及是否有用是另一个话题,但请参阅 --first-parent
选项 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分支却没有commit?
关于"crossovers"
这正是图形工具表示合并的方式:从右到左(左边的那个是 "receiving" 合并的那个)。因此,当必须将提交系列(而不是在这里可能会造成混淆的分支)合并到另一个恰好当前以图形方式表示在其右侧的提交系列时,该工具会绘制一条线,是的,该线与其他线交叉以使其连接到合并提交从右边。
所以这只是一个图形约定。
关于竖线 (评论后)
分支(可选地,使用 --decorate)在它们当前指向的提交处添加到图中,但不要忘记你的 repo 树实际上并不需要它们中的任何一个。这些提交系列是你的树的主体,其中 "branches" 实际上只是提示,这就是比喻有点崩溃的地方......
(我承认这是一个非常 low-tech 的表示,...但我们也承认,信息丰富的提交消息会使事情变得更加清晰。)
这将是一条评论,但没有空间,需要格式化。
此时的部分:
| | | * 27ac7b7 merge
| | | |\
| | |_|/
| |/| |
| | | * 95b2c48 (origin/f-3)
| | | * xxxxxxx
不完整。如果你继续浏览图表,它最终可能会像这样自行解决:
| | | * xxxxxxx
| | |/
| | * yyyyyyy
| |/
| * zzzzzzz
|/
* sssssss
(但我们真的猜不出来,可能比那复杂得多)。
有了足够的附加图表,我们可以对提交 27ac7b7
说更多。目前我们所知道的是它是一个合并,有两个父级,第一个父级是 95b2c48
(标记为 origin/f-3
)。我们在这里看不到第二个父提交的哈希 ID,但是沿着图形线,您最终会到达第二个父提交。
(您询问的第一个提交——0ab11dd
——是与父 xxxxxxx
的合并提交,是跟随 direct-downward 行到该提交的结果,并提交 bd7278a
,沿着最初向右下降然后立即反转并向下交叉到 bd7278a
的线的结果。git log --graph
通过绘制 not-first 强调 first/not-first 亲子关系向右链接。一些图形绘制方法,包括我通常使用的方法,根本不区分。区分何时以及是否有用是另一个话题,但请参阅 --first-parent
选项 git log
.)