【发布时间】:2021-11-03 16:32:30
【问题描述】:
基本上是标题。 This 似乎是构建提交的首选资源。我在官方书籍中找不到描述这个主题的文章,所以如果我错过了,请指出来。
我的问题是关于没有父母的提交,即初始提交。具体来说,在不存在父提交的情况下会散列什么?而且,何时需要父提交?是否可以在没有父母的情况下进行多次提交?
在我的实验中,我发现在第一次提交之前,不存在任何分支;考虑到分支是提交的引用,这是有道理的,而且还没有。
【问题讨论】:
-
是否可以在没有父母的情况下进行多次提交? Yes.提交形成一个有向无环图,并且这样的图不需要有单个根节点。然而,对于 Git 的“正常”使用,多次根提交是非常罕见的。
-
在 repo 中查找所有没有父母的提交:
git rev-list --max-parents=0。要在现有存储库中创建新的孤立分支,请使用--orphan,请参阅 here。 -
请注意,哈希是通过对提交数据运行函数(SHA1 或现在有时是 SHA256)计算得出的,这完全是元数据,并以
git cat-file -p <hash-of-commit>打印。保存的源代码在(单数)tree中,而父代码在每个parent行中的每一行列出一个。父母的列表可以是空的,可以是一行,也可以是 N > 1 行。 -
请注意,由于这两个哈希函数都是顺序敏感的,因此更改父级的 order 会导致两个不同的哈希 ID(可取,因为“其他顺序”中的合并会产生相同的树,但不同的第一父链接,
--first-parent选项只遍历第一父链接)。
标签: git