我有一个包含master和test分支的测试存储库。我确实在测试分支中做了一些更改,并对测试分支进行了标记。然后我删除了测试分支(不,我没有与master合并)。令人惊讶的是,当我尝试使用我之前做过的标签结帐时,我能够得到我之前删除的测试分支(当然是在DETACHED HEAD状态,在“no branch”中)。这怎么可能?有人能帮我理解吗?
答案 0 :(得分:10)
操作后不会立即删除Git对象(例如,可以使用git reflog
恢复它们)。您必须明确使用git gc
(也调用git prune
)手动删除它们,或等待一段时间控制gc.pruneexpire
以自动修剪它们(如果{{1}启用了它})。
此外,只有在没有引用对象时才会永久删除对象,在这种情况下,您仍然有一个Tag,因此保留了提交及其历史记录。
检查此命令输出:
gc.auto
它将为您提供存储库的概述,您在此处看到的提交不会被垃圾收集器永久删除。