问题 Git - 变基于特定标签


(这看起来应该很容易做到,但到目前为止,我的搜索空白了。)

我有一个来自上游源的代码体,在各个分支上标记了各种版本。

我正在开发基于标签“v1.0”的“develop”分支。从那以后出现了许多版本,但是虽然“v2.0”很有意思,但我想将我的开发分支重新定义为“v1.5”并继续在那里工作(假设我不打算将其反馈到上游)。也许以后我会把它再次变为“v2.0”。

(为此目的,假设“v1.x”是同一分支上的所有标签。为了额外的功劳,我们可以假设“v2.0”是另一个分支上的标签。)

我能够很容易地基于“v1.0”标签创建初始的“开发”分支,但是rebase似乎只适用于分支。也不能使用标签一个rebase?如果没有,那么实现这一目标的正确方法是什么(以便与基于特定标签的变基具有完全相同的效果)?


12916
2017-09-18 03:06


起源

你可以改变 至 一个标签。如果您不能这样做,请包括您使用的命令。 - J-16 SDiZ
哼!我正在使用TortoiseGit做这个(它没有提供使用标签进行变基的选项 - 或者是吗?)然后我在git bash中尝试它并且它没有效果......但我显然有语法错误(我尝试了“git rebase develop v1.5”,这是不正确的...我只是使用“git rebase v1.5”开发签出,它似乎有效)。编辑:实际上,我这样做是出于某种原因,这是我在别处找到的一个不太好的例子。 - MartyMacGyver
我认为checkout和rebase是执行此操作的标准方法。 - J-16 SDiZ
是的,无论是单独的还是Karl在下面描述的,都是一步到位的。我很惊讶TortoiseGit没有提供这种能力......这让我想知道它是否有可能。 - MartyMacGyver


答案:


您将使用以下命令:

git rebase --onto v1.5 v1.0 develop

develop 命令的一部分必须是分支,但其他两个可以是你想要的任何东西。


13
2017-09-18 03:14



看起来我最初搞砸了语法,因此导致了我的问题。在tortoisegit的rebase选项中显然没有这个功能让我质疑是否有可能。但是,这个帖子已被证明比我预期的更有用。谢谢! - MartyMacGyver
跟进:我已经尝试过这种来回和反复。这实际上证明了比使用TortoiseGit的原始测试合并分支到分支更复杂(因为无法指定祖先标记,抛出不必要的合并“冲突”,这可能已经通过添加的信息自动解决,就像命令行git。它仍然是方便的软件,但显然它没有尽可能彻底地处理rebase。 - MartyMacGyver