选择一个标签进行“cherry-picking”会影响后面的标签吗?

8

在进行发布时,我检出了之前发布的标签,并使用git cherry-pick <commit-id>将新项目提取出来并合并到了该标签中。然后,我使用git tag <tag-name>创建了一个新标签。

这样做会影响我之前提取更改的旧标签吗?

2个回答

9
一句话总结:不行。标签一旦创建,就像分支引用一样不能随意移动。你需要有意识地使用。
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。

"

2
当你挑选一个提交时,Git 实际上会从该提交中创建一个补丁(找出它引入的更改),并将其应用于当前 HEAD。在此过程中,将创建一个全新的提交,没有任何链接到你从中挑选的原始提交。Git 只会复制提交消息和提交作者,并在新提交中重用它们;但除此之外,它是完全独立的提交。
因此,这与自己创建一个新提交没有区别。所以,不,像提交任何内容一样,挑选提交不会影响其他提交或标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接