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