能够使用git标签恢复已删除的分支

Shu*_*nya 4 git

我有一个包含master和test分支的测试库.我确实在测试分支中做了一些更改,并对测试分支进行了标记.然后我删除了测试分支(不,我没有与master合并).令人惊讶的是,当我尝试使用我之前做过的标签结帐时,我能够得到我之前删除的测试分支(当然是在DETACHED HEAD状态,在"no branch"中).这怎么可能?有人能帮我理解吗?

Kur*_*tal 10

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

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

检查此命令输出:

git log --oneline --decorate --graph --all
Run Code Online (Sandbox Code Playgroud)

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