Git: 变基和删除过时的分支会丢失提交数据吗?

Git: Does rebasing and removing obsolete branches lose commit data?

Referring to this specific example in the Git Pro book on the Git website 我有一个关于变基的问题:

当最终历史如图 43 所示并且名为 "client" 和 "server" 的分支已被删除时,三个提交 C3、C4 和 C10 会发生什么情况?这些提交是否不再可以从 git 的数据库中检索?

我意识到这些提交中引入的更改将以 C3'、C4' 和 C10' 提交的形式重播到主分支上。

我很好奇原始提交是否在 rebase 后丢失,因为它们不再记录在历史记录中。

谢谢。

变基后提交 C3、C4 和 C10 不会丢失。它们仍然存在于您的本地 git 存储库中,但它们已变为 "unreachable"。这意味着不再有任何来自命名引用(HEAD、分支、标签等)的路径导致这些提交。 Git 将 最终 删除无法访问的提交作为其垃圾收集过程的一部分,但默认设置是删除超过两周的提交。

在这些提交被 git 实际清理之前,您可以继续通过提交 ID 引用它们。您可以通过创建新分支使它们再次可访问,如:

git checkout -b newbranch C10