我有一个测试存储库,其中包括主分支和测试分支。我在测试分支中进行了一些更改,并标记了测试分支。然后我删除了测试分支(没有与主分支合并)。令人惊讶的是,当我尝试使用先前创建的标记进行检出时,我能够获取我之前删除的测试分支(当然是在“无分支”的DETACHED HEAD状态下)。这是如何可能的?有人能帮我理解吗?
操作完成后(例如,使用 git reflog
),Git 对象不会立即删除。您必须显式使用 git gc
(它也调用 git prune
)手动删除它们,或等待由 gc.auto
启用的 gc.pruneexpire
控制的一段时间自动修剪它们。
此外,仅当没有引用指向对象时,对象才被永久删除,在这种情况下,您仍然有一个标签在上面,因此提交及其历史记录得以保留。
请检查此命令输出:
git log --oneline --decorate --graph --all
它将为您提供有关存储库的概述,您在这里看到的提交不会被垃圾回收器永久删除。
--oneline
,它使命令每个提交只打印一行。谢谢。 - KurzedMetal
git-reflog
来完成这种任务。 - kostix