基本上是标题。 这篇文章 似乎是讲解提交所构建的内容的主要资源。如果我错过了官方书中描述此主题的文章,请指出给我。
我的问题是关于没有父提交的提交,也就是初始提交。具体来说,在不存在父提交的情况下将进行哈希处理的内容是什么?何时需要父提交?是否可能有多个没有父提交的提交?
在我的实验中,我发现在第一次提交之前,不存在任何分支;这很合理,考虑到分支是对提交的引用,并且尚未存在任何提交。
你想要多少或少就有多少!
提交不一定只有一个父节点。它可以有任意数量的父节点!
执行章鱼合并看起来与常规合并相同,只需使用更多参数即可。
常规合并:
# merge branch1 into current branch
git merge branch1
章鱼合并:
# Merge branches 1, 2, and 3 into the current branch
git merge branch1 branch2 branch3
如果你想一次性合并多个独立的特性分支,那么章鱼合并可能非常有用。
git switch main
git merge feature-1 feature-2 feature-3 feature-4
如果你只有一个合并提交,那么在历史记录中看起来会更加清晰,而不是一堆连续的合并提交。
最好在很少出现合并冲突的情况下使用。
在 Linux 内核的 66 种合并情况下,他们正在将更新内容合并到一堆单独的驱动程序中,因此分支之间没有冲突。
基本上,全部内容都包括在内。
这意味着如果您更改提交消息(例如使用git commit --amend
),则会更改提交哈希,因此该提交看起来像是一个不同的提交。
可以! Git 可以做任何事情! 有两种方法可以有多个没有父级的提交:
您可以通过git switch --orphan <new branch name>
创建孤立分支,它将创建一个空的孤立分支。
注意:要合并具有不相关历史记录的存储库,请执行:
# Add a separate repo as a remote
git remote add other-repo <other-repo-url>
# Fetch the contents of that repo
git fetch other-repo
# Merge the main branch of the other repo into your repo
git merge --allow-unrelated-histories other-repo/main
git rev-list --max-parents=0
。要在现有存储库中创建新的孤立分支,请使用--orphan
,请参见此处。 - Romain Valerigit cat-file -p <hash-of-commit>
打印。保存的源代码位于(单数)tree
中,而父级则在每个parent
行中逐行列出。父级列表可以为空,可以是一行,也可以是N>1行。 - torek--first-parent
选项仅遍历第一父链接)。 - torek