Git,提示如何理解分支图

时间:2017-09-17 06:59:02

标签: git

是否有一些好的指南或助记符如何消化看起来像这样的git log graph

*   66fa80f (HEAD -> issue) Merge branch 'master' into issue
|\
| *   5215cfa (master) Merge branch 'older'
| |\
| * \   30e2e4d Merge branch 'older'
| |\ \
| * | | 2256e8e edit quickfix
| * | |   aac3274 Merge tag 'iss'
| |\ \ \
| * | | | 89a1904 (tag: mas) master added line and files
* | | | |   d93408f Merge branch 'older' into issue
|\ \ \ \ \
| | |_|_|/
| |/| | |
| * | | | 0d8d024 (older) older4
| | |_|/
| |/| |
| * | | 339ce93 older 3
* | | |   71f25e0 Merge commit 'aff67fc' into issue
|\ \ \ \
| |/ / /
| | | /
| |_|/
|/| |
| * | aff67fc older2
| * | c9179a8 older commit 1
* | | 9710daf (tag: iss) issue added line
| |/
|/|
* | b74e3ae quickfix
* | b96ae17 edit README little more
|/
* 4bdbf83 edit readme
* 2fe7b32 (tag: v0.1) Initial commit

很难看到发生了什么。是否有一些工具或精神技巧来帮助理解图表?

2 个答案:

答案 0 :(得分:1)

提交之间的一行意味着较低的提交是较高提交的父级。有几个父母的提交是合并。您可以将具有多个子项的提交称为“fork”,但从git的角度来看,它不是任何特殊的。

这就是图表的含义。要讨论如何进一步“理解”它,应该指出你真正想问的问题。

在许多情况下,你不应该理解它。相反,将工作委托给机器,它很擅长。例如,如果您需要知道,如果您需要知道“如果提交C包含在分支B中”,则发出命令:

extract_first()

获得退出代码的答案。另一个例子:如何知道哪些提交包含在分支B1中而不包含在B2中。命令是:

IndexError

等等......

答案 1 :(得分:0)

使用git-flow等分支模型保持图表清洁。基本上,......在合并之前,......重新定义必须合并的分支。如果问题只是一个ascii视图,那么gitk就是解决方案。如果问题是分支束太复杂,只需保持有序。 ^ _ ^