如果我有A
个带有标签的提交,例如tag-A
,然后标记为B
的下一个提交tag-B
;如果我压扁这两个提交,那么标签会发生什么?两者都将分配给压缩的提交吗?
答案 0 :(得分:3)
标签不会移动,因为重新设置了重写历史记录。原始提交将具有标签,因为标签不会移动。这是一张图片:
之前:
(HEAD) B - tag-B
|
A - tag-A
|
X
之后:
B - tag-B
|
(HEAD) C A - tag-A
|/
X
这里C
是A
和B
的壁球。它开启了一个全新的历史,其中A
和B
将不参与。分支头将移至C
,然后从那里继续。
答案 1 :(得分:2)
是否都将分配给压缩的提交?
不。
每个标记都指向一个特定的提交,并且它永远不会独自离开该提交。每个标签指向的提交仍然有效,只是不在您的任何分支中。
压缩两个提交将创建一个单独的新提交,仅使用原始提交的内容 。此新提交将没有指向它的任何标签。
您可以手动移动这两个标签以指向您的新提交:
git tag -f tag-A
git tag -f tag-B