标签上的樱桃采摘会影响后者吗?

时间:2014-08-22 13:37:55

标签: git git-tag git-cherry-pick

在发布时,我检查了之前发布的标签,并将新项目(使用git cherry-pick <commit-id>)挑选出来。然后,我使用git tag <tag-name>创建了一个新标记。

这会影响旧标签吗?我把这些变化变成了?

2 个答案:

答案 0 :(得分:4)

总之一句:不。标签一旦创建,are not meant to move around就像分支引用一样。你需要刻意使用

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。

答案 1 :(得分:1)

当您选择提交时,Git实际上是从该提交创建一个补丁(找出它引入了哪种更改)并将其应用于当前的HEAD。在该过程中,创建一个全新的提交,而没有任何链接回到您从中挑选的原始提交。 Git将只复制提交消息并提交作者并在新提交中重用它;但除此之外,它是一个完全独立的提交。

因此,与自己创建新提交没有什么不同。所以不,挑选樱桃,就像提交任何东西一样,不会影响其他提交或标签。