git图形线条和星号表示什么?

git图形线条和星号表示什么?,git,git-log,Git,Git Log,试图更详细地理解git。在git log的图形输出中,线和点是什么意思?为什么一部分的圆点只在左边,另一部分的圆点只在右边?是因为我从特定的分支运行了命令吗?会不会和师父不一样?拉合并的显示方式是否不同 星号表示提交,行表示父子关系 所以基本上这意味着你有两个分支(让我们称它们为left和right)。你在左边做了很多,接下来在右边,你在左边合并了右边,在右边做了进一步的工作,然后又合并了 在进行合并的情况下,它们使用一些ASCII艺术来表示右侧的仍然处于活动状态。这就是我喜欢语法更清晰的tig

试图更详细地理解git。在git log的图形输出中,线和点是什么意思?为什么一部分的圆点只在左边,另一部分的圆点只在右边?是因为我从特定的分支运行了命令吗?会不会和师父不一样?拉合并的显示方式是否不同


星号表示提交,行表示父子关系

所以基本上这意味着你有两个分支(让我们称它们为left和right)。你在左边做了很多,接下来在右边,你在左边合并了右边,在右边做了进一步的工作,然后又合并了


在进行合并的情况下,它们使用一些ASCII艺术来表示右侧的仍然处于活动状态。这就是我喜欢语法更清晰的tig的原因之一。

星星是提交(在右侧),行连接提交(即,它们显示连接)。

这一点很重要,尤其是在stackoverflow上,因为很多问题和答案都是以有代表性的图表的形式出现的,就像我下面的图表一样

每个星号都是一个提交,这些行向下指向每个父提交。如果一个提交位于另一个提交的正下方,那么它也是一个父提交

* D (master)
* C
* B
* A
在上面的示例中,A是第一个提交,B是第二个提交,依此类推-祖先是
D->C->B->A
。这一部分很明显,但假设您基于B创建了一个分支,并添加了一个新的提交

* D (master)
* C
| * E (dev)
|/
* B
* A
现在我们有两个分支,
master
dev
D(master)
的祖先是
D->C->B->A
,而
E(dev)
的祖先是
E->B->A

你看到两条线分开,这意味着这两条线都会导致共同认为提交一个父类——在上面的代码> B<代码>的情况下,对代码< E> <代码>和<代码> C < /代码>都是一个父节点。

假设您继续向
dev
分支添加另一个commit,然后决定准备将
dev
合并到
master

* G (master)
|\
* | D 
* | C
| * F (dev)
| * E
|/
* B
* A
上图显示您在
E
之后添加了
F
commit(请参见星号如何直接位于彼此上方/下方)。然后,您签出了
分支并合并到
开发
中。这创建了一个合并提交,在这里它被称为
G

上文中,我解释了线是如何从同一提交向上的意思是指那些行在前面,这两个词认为第一个是他们的共同父。然而,在本例中,

G
有两行代码指向它。这意味着它有两个父项。这是一个合并提交

在最后一个图中,您会注意到提交(星号)位于不同的行上

* | D (master)
* | C
| * F (dev)
| * E
所有这些提交现在都合并在一起,但是
D
C
是在与
F
E
不同的分支上创建的。星号所在的一侧表示提交属于哪个分支<代码>D在主分支上生成,而
E
在开发分支上生成


这些合并的历史可能会变得非常纠结,它们并不总是像你现在这样整洁有序。您可能会选择关注历史的外观,并可能会决定尝试通过与--no ff或--ff only合并,或执行回扣来塑造历史。我不想谈这个,只是想说,人们可以通过这些方法来控制git历史图表的外观(这很重要)。

我从来没有听说过tig——这很好。这似乎是主页:太棒了!哇,提交到哪个分支是非常好的信息,这里还有一个问题: