1

我希望下面的问题不会太笼统。如果没有,请告诉我,这篇文章可能会迁移到其他地方。所以,我在这个非常好的文档(第 10 页底部)中读到了提交本身可以被视为一个分支。怎么说呢?提交如何支持分支的整个历史(对于有数学头脑的人来说,提交可以被认为是对某棵树的纤维化(支持所谓的分支的历史))

4

2 回答 2

3

我认为对“分支”概念的讨论过于深奥,但这并不是非常重要。

效果是每个提交都代表一个分支,其 HEAD 是该提交,与典型分支的区别在于分支名称(即提交的 SHA-1)是不可变的。hash-as-branch-name 始终指向 hash-as-commit。

用这个命令自己试试看:(git checkout 2ae907这里引用的是一些以前的提交)。你会得到这样的文本:

注意:签出“2a9e07”。

您处于“分离 HEAD”状态。您可以环顾四周,进行实验性更改并提交它们,并且您可以放弃在此状态下所做的任何提交,而不会通过执行另一个签出来影响任何分支。

提交被添加到提交图中,因此每个提交都是包含所有先前历史记录的子图的根。

于 2013-02-07T01:13:10.950 回答
1

在 git 中,提交始终包含该树的完整历史记录(通过包含对其父提交的引用)。从这个意义上说,您可以将其视为一个分支。唯一的区别是分支有一个符号名称,因此您不必通过它的哈希来引用它。

于 2013-02-07T00:58:23.957 回答