5

在发布时,我检查了之前发布的标签并挑选了新项目(使用git cherry-pick <commit-id>)放入其中。然后,我使用git tag <tag-name>.

这会影响我挑选更改的旧标签吗?

4

2 回答 2

6

一句话:没有。标签一旦创建,就不会像分支引用那样移动。你需要故意使用

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。

于 2014-08-22T13:46:31.577 回答
1

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

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

于 2014-08-22T13:51:52.737 回答