4

我有一个带有主分支和测试分支的测试存储库。我确实对测试分支进行了一些更改,并对测试分支进行了标记。然后我删除了测试分支(不,我没有与master合并)。令人惊讶的是,当我尝试使用我之前所做的标签进行结帐时,我能够获得我之前删除的测试分支(当然处于 DETACHED HEAD 状态,处于“无分支”)。这怎么可能?有人可以帮我理解这个吗?

4

1 回答 1

10

Git 对象在操作后不会立即删除(例如,它们可以使用 恢复git reflog)。您必须显式使用git gc(也调用git prune)手动删除它们,或者等待一段受控的时间gc.pruneexpire以自动修剪它们(如果由 启用gc.auto)。

此外,只有在没有引用对象时才会永久删除对象,在这种情况下,您仍然有一个标签,因此提交及其历史记录会被保留。

检查此命令输出:

git log --oneline --decorate --graph --all

它将为您提供存储库的概述,您在此处看到的提交不会被垃圾收集器永久删除。

于 2013-08-27T12:22:50.873 回答