用标签固定分离的头

Fixing detached head with a tag

是否可以用标签修复分离的头部?换句话说,是否有可能防止垃圾收集器在最后一次提交时删除带有标签的分离头中的提交?

我发现的所有其他 post 都在谈论在分离头中创建一个分支,以防止在离开到另一个分支之前丢失在此状态下创建的提交。

据我了解,标签和分支之间的主要区别是分支随头部移动,而标签则停留在与创建它的位置完全相同的位置。

在我的场景中,我已经使用 SHA-1 进行了检查,然后从这一点开始进行了几次提交。临走前,我想放个书签,我觉得从语义上来说,一个标签比一个分支更好,以后再回去。

如果这是我唯一能做的事情,我现在创建一个分支而不是标签没有任何问题,但我想知道 git 在内部使用标签和与分离的头相关的分支。

此外,从概念上讲,如果有人不同意我关于创建标签而不是分支的观点,在这种情况下,将不胜感激。

是的,标签会像分支一样阻止垃圾回收。只有无法访问的提交才有资格进行垃圾收集,并且 git 检查每个引用以检查提交是否可以访问。

放置一个标签来保存一些提交以供将来使用并没有错。但是,也有一些缺点:

  • git fetchpush 有一些选项将所有标签复制到目标端,没有任何映射。所以任何私有临时标签都可能在公共命名空间中结束。
  • 标签太多可能会导致 GUI 出现问题

总的来说,我会说标签更像是 public 永久的里程碑,例如发布。

还有更多选项可供考虑:

  • 一段时间以来,提交未通过 reflog 收集和访问
  • 可以是一个分支,不变化就没有问题
  • 它可以是 tagsbranches 之外的另一个命名空间中的引用。例如,这就是 bisect 对中间标记的作用
  • 它可以合并到专门的收集所有分支。这是我在本地开发中使用的