压缩提交的标签会怎样?
What happens to tags of squashed commits?
如果我提交 A
标记了标签,例如tag-A
,然后下一个提交 B
标记为 tag-B
;如果我压缩这 2 个提交,标签会发生什么?两者都会分配给压缩的提交吗?
Will both be assigned to the squashed commit?
没有。
每个标签都指向一个特定的提交,并且它永远不会自行离开该提交。每个标签指向的提交仍然存在,只是不在您的任何分支中。
压缩两个提交创建一个单独的新提交,只有 原始提交的内容。这个新提交将没有任何标记指向它。
您可以手动移动这两个标签以指向您的新提交:
git tag -f tag-A
git tag -f tag-B
标签不会移动,因为 rebase 会重写历史记录。原始提交将具有标签,因为标签不会移动。这是一张照片:
之前:
(HEAD) B - tag-B
|
A - tag-A
|
X
之后:
B - tag-B
|
(HEAD) C A - tag-A
|/
X
这里C
是A
和B
的南瓜。它开始了一个全新的历史,其中 A
和 B
将不会参与。分支负责人将移至 C
并从那里继续。
如果我提交 A
标记了标签,例如tag-A
,然后下一个提交 B
标记为 tag-B
;如果我压缩这 2 个提交,标签会发生什么?两者都会分配给压缩的提交吗?
Will both be assigned to the squashed commit?
没有。
每个标签都指向一个特定的提交,并且它永远不会自行离开该提交。每个标签指向的提交仍然存在,只是不在您的任何分支中。
压缩两个提交创建一个单独的新提交,只有 原始提交的内容。这个新提交将没有任何标记指向它。
您可以手动移动这两个标签以指向您的新提交:
git tag -f tag-A
git tag -f tag-B
标签不会移动,因为 rebase 会重写历史记录。原始提交将具有标签,因为标签不会移动。这是一张照片:
之前:
(HEAD) B - tag-B
|
A - tag-A
|
X
之后:
B - tag-B
|
(HEAD) C A - tag-A
|/
X
这里C
是A
和B
的南瓜。它开始了一个全新的历史,其中 A
和 B
将不会参与。分支负责人将移至 C
并从那里继续。