我有一个项目,其中我的开发分支是我的稳定分支之前的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
有没有办法在标签上进行gase rebase而不是提交,以便我可以在[tag] 1.0之上重新设置[tag] 3.0的所有提交但是从[tag] 2.0中排除所有内容?
答案 0 :(得分:3)
您可以通过以下方式完成:
git rebase --onto 1.0 2.0 BRANCH
其中BRANCH是您要将rebase应用到的分支的名称。
这将使用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