1

我有一个项目,其中我的开发分支在我的稳定分支之前有 2 个标记的版本,但我想删除第一组标记的更改(这是我不再需要的一系列功能)但应用最新的标记更改(第二个标记) 到稳定的标签上。

例如:

提交:

[tag] 3.0 - 
sdaf213 Some Commit of the tag 3
sdaas34 Some other commit in this tag
[tag] 2.0 -
wert78 Some commit of tag 2
werg99 Another commit of tag 2
werh55 And another of tag 2
[tag] 1.0 (Stable) -
pry77 Commits of tag 1
...older commits

有没有办法对标签进行 git rebase 而不是提交,这样我就可以在 [tag] 1.0 之上 rebase [tag] 3.0 的所有提交,但从 [tag] 2.0 中排除所有内容?

4

1 回答 1

3

您可以通过以下方式简单地做到这一点:

git rebase --onto 1.0 2.0 BRANCH

其中 BRANCH 是要应用变基的分支的名称。

这将使用 1.0 标签作为父标签,然后按顺序重放 3.0 标签的提交:

sdaf213 Some Commit of the tag 3
sdaas34 Some other commit in this tag
1.0 (Stable) -
pry77 Commits of tag 1
...older commits

如您所见,3.0 标记不会重新应用到历史记录的末尾。您将不得不创建一个新的,尽管这是有道理的,因为历史已经改变,您可能希望制作这个 2.1 或 3.1 以满足您的需要。

此外,您可以在一系列标签上使用它。例如,如果您现在使用 [tag] 4.0 并想摆脱 [tag] 2.0 和 3.0:

git rebase --onto 1.0 3.0 BRANCH
于 2013-04-10T16:03:28.717 回答