压缩提交的标签会发生什么?

时间:2019-01-20 21:54:34

标签: git git-commit git-tag git-squash

如果我有A个带有标签的提交,例如tag-A,然后标记为B的下一个提交tag-B;如果我压扁这两个提交,那么标签会发生什么?两者都将分配给压缩的提交吗?

2 个答案:

答案 0 :(得分:3)

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

之前:

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

之后:

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

这里CAB的壁球。它开启了一个全新的历史,其中AB将不参与。分支头将移至C,然后从那里继续。

答案 1 :(得分:2)

  

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

不。

每个标记都指向一个特定的提交,并且它永远不会独自离开该提交。每个标签指向的提交仍然有效,只是不在您的任何分支中。

压缩两个提交将创建一个单独的新提交,仅使用原始提交的内容 。此新提交将没有指向它的任何标签。


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

git tag -f tag-A
git tag -f tag-B