【发布时间】:2021-08-05 16:13:41
【问题描述】:
我在 dev 分支中创建了一个 git 标签。但是如果我将它从 dev 合并到 main 分支,git标签是否也会自动添加到 main 中?
【问题讨论】:
标签: git git-merge git-branch
我在 dev 分支中创建了一个 git 标签。但是如果我将它从 dev 合并到 main 分支,git标签是否也会自动添加到 main 中?
【问题讨论】:
标签: git git-merge git-branch
标签不动。标签附加到特定的提交。如果您不以某种方式销毁该提交(这不是一件容易的事情),并且如果您不删除标签,则该标签将永远附加到该提交上。 (确实,只要不删除标签,提交就不能被销毁,这是标签的功能之一。)
提交不是“在”分支。一个分支命名一个提交,这就是它所适用的全部。如果您(和 Git)可以从给定的提交通过父链向后跟踪到某个其他提交,例如您的标签附加到的提交,那么我们可以说第二个提交是 可从首先。
我认为您的意思是您将标签附加到可从dev 访问的提交。因此,可以从dev 访问标记的提交。如果您随后使用真正的合并将dev 合并到main,那么根据合并的定义,现在也可以从main 访问标记的提交。
【讨论】:
您不能在分支中创建标签。
将标签视为提交。提交是您的代码在特定时间的快照。它不依赖于任何分支,甚至不属于一个分支。也就是说,如果你删除了一个分支,你并没有删除任何提交(幸运的是)。
分支只不过是一个指针。如果您多次提交到一个分支,指针会记住该分支上的先前提交,这只是一个(非常实用的)功能。但它只不过是一个指针。
如果你合并 2 个分支,你真正要做的是将两个分支的代码合并到另一个提交中,即所谓的合并提交。如果您的标签是其中一个分支上的提交,则标签提交的代码(或至少是合并版本)将在合并提交中。
为了让事情更清楚,假设您有一个分支,并且您在该分支“中”制作了一个标签。然后你删除分支。标签仍然存在,因为该提交不会被删除。
【讨论】: