在发布时,我检查了之前发布的标签并挑选了新项目(使用git cherry-pick <commit-id>
)放入其中。然后,我使用git tag <tag-name>
.
这会影响我挑选更改的旧标签吗?
在发布时,我检查了之前发布的标签并挑选了新项目(使用git cherry-pick <commit-id>
)放入其中。然后,我使用git tag <tag-name>
.
这会影响我挑选更改的旧标签吗?
一句话:没有。标签一旦创建,就不会像分支引用那样移动。你需要故意使用
git tag --force v1.0 <some-other-commit>
将v1.0
标签移动到其他提交。在标记的提交之上挑选其他提交(换句话说,应用那些其他提交引入的更改)不会影响标记。
例如,如果v1.0
是一个标签,您的历史记录如下所示,
A -- B [master,v1.0]
\
C -- D [develop]
然后你跑
git checkout v1.0
git checkout -b rc1.1
git cherry-pick C
git cherry-pick D
你最终会得到
A -- B [master,v1.0]
\ \
\ C' -- D' [HEAD,rc1.1]
\
C -- D [develop]
标签将v1.0
保留在原处,仍然指向提交 B。
当你选择一个提交时,Git 本质上是从该提交创建一个补丁(找出它引入了什么样的更改)并将其应用于当前的 HEAD。在该过程中,将创建一个全新的提交,而没有任何链接返回到您从中挑选的原始提交。Git 只会复制提交消息和提交作者,并在新提交中重用它;但除此之外,这是一个完全独立的提交。
因此,与自己创建一个新的提交没有什么不同。所以不,樱桃采摘,就像提交任何东西一样,不会影响其他提交或标签。