2

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

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

据我了解,标签和分支之间的主要区别在于,与保持在创建它的完全相同位置的标签相比,分支随着头部移动。

在我的场景中,我使用 SHA-1 进行了检查,然后从此时开始进行了几次提交。在离开之前,我想放一个书签,我认为就语义而言,一个标签会比一个分支更好,以便稍后返回。

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

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

4

2 回答 2

3

放置一个标签来保存一些提交以供将来使用是不正确的。但是,也有一些缺点:

  • git fetchpush使用某些选项将所有标签复制到目标端,而不进行任何映射。因此,任何私有临时标签都可能最终出现在公共命名空间中。
  • 标签过多可能会导致 GUI 出现问题

总的来说,我会说标签更倾向于作为公共的永久里程碑,例如发布。

有更多选择需要考虑:

  • 有一段时间,提交没有被收集和通过 reflog 访问
  • 它可以是一个分支,如果它不改变它不是问题
  • 它可以是另一个命名空间中的引用,而不是tagsor branches。例如,这就是 bisect 对中间标记的作用
  • 它可以合并到专门的收集所有分支。这是我在本地开发中使用的
于 2017-08-13T15:11:01.323 回答
2

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

于 2017-08-13T13:57:26.133 回答