代码之家  ›  专栏  ›  技术社区  ›  Jim

挤压提交的标签会发生什么情况?

  •  0
  • Jim  · 技术社区  · 6 年前

    如果我有承诺 A 用标签标记,例如 tag-A ,然后下一次提交 B 标记为 tag-B ;如果我压扁这两个提交,标签会发生什么情况?是否都将分配给压缩提交?

    2 回复  |  直到 6 年前
        1
  •  3
  •   Mad Physicist    6 年前

    标记不会移动,因为重新设置基会重写历史记录。原始提交将具有标记,因为标记不会移动。这是一张图片:

    之前:

    (HEAD) B - tag-B
           |
           A - tag-A
           |
           X
    

    后:

             B - tag-B
             |
    (HEAD) C A - tag-A
           |/
           X
    

    在这里 C 是的挤压 A B . 它开创了一个全新的历史, 不参与。分支头将移到 C 从那里开始。

        2
  •  2
  •   Joseph Silber    6 年前

    是否都将分配给压缩提交?

    不。

    每个标记都指向一个特定的提交,它永远不会自己离开该提交。每个标记指向的提交仍然是活动的,只是不在任何分支中。

    挤压两个提交将创建一个单独的新提交,仅使用 内容 最初的承诺。这个新提交不会有任何指向它的标记。


    您可以手动移动这两个标记以指向新提交:

    git tag -f tag-A
    git tag -f tag-B
    
    推荐文章