0

可以用标签固定分离头吗?换句话说,是否有可能阻止垃圾收集器在最后一次提交时在具有标签的分离头中提交提交?用标签固定分离头

我发现的每一篇文章都谈到了在分离头中创建分支以防止在离开另一分支之前丢失在此状态下创建的提交。

据我所知,一个标签和一个分支之间的主要区别在于分支移动的头部与标签保持完全相同的位置。

在我的场景中,我已经用SHA-1签出,然后从这一点完成了几个提交。在离开之前,我想写一个书签,我认为就语义而言,标签会比分支稍后回来更好。

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

另外,在概念上,如果有人不同意我关于创建标签而不是分支,在这种情况下,解释将不胜感激。

+1

到目前为止您有两个很好的答案;我会添加一条评论:这取决于你的意思* fix *。毕竟,分离的HEAD首先不会被破坏。 – torek

回答

1

是的,标签将阻止垃圾收集的方式与分支一样。只有不可达的提交符合垃圾回收的条件,并且git会检查每个ref以检查提交是否可达。

2

为未来保存一些提交而放置标记并不正确。有,但是,一些缺点:

  • git fetchpush一些选项复制所有标签到目标身边,没有任何映射。所以任何私人临时标签可能会以通用名称空间结束。
  • 有太多的代码可能会导致问题的GUI

总体来说,我要说的是,标签更意在作为公共永久的里程碑,例如版本。

有更多的选择来考虑:

  • 一段时间后,提交不收集且可通过引用日志
  • 它可以是一个分支,它是不是一个问题,如果它不改变
  • 它可以是另一个命名空间中的参考,而不是tagsbranches。这是例如什么平分对于中间标记
  • 它可以合并到专用收集所有分支。这就是我在本地开发中使用的
+0

你的回答非常明确,但我的问题的主要部分更多的是关于防止承诺被垃圾收集。不过,我会根据你的建议考虑标签只为公共永久的里程碑。在这种情况下,我的经验法则是仅将标记添加到现有分支中,并且在大多数情况下仅添加到永久分支以防止删除将删除标记的分支。我使用git-flow,然后,标签将在主分支中的99%的情况下。 – Samuel