【问题标题】:Git - rebasing to a particular tagGit - 重新定位到特定标签
【发布时间】:2012-09-18 03:06:11
【问题描述】:

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

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

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

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

我能够轻松地基于“v1.0”标签创建初始“develop”分支,但 rebase 似乎只适用于分支。不能一个 rebase 也使用标签吗?如果不是,那么实现这一点的正确方法是什么(以便与重新定位到特定标签具有完全相同的效果)?

【问题讨论】:

  • 您可以将 变基为 一个标签。如果您不能这样做,请包含您使用的命令。
  • 嗯!我是用 TortoiseGit 做这个的(它完全没有提供使用标签变基的选项 - 或者是吗?)然后我在 git bash 中尝试了它并且它没有效果......但我显然有一个语法错误(我尝试了“git rebase develop v1.5”,这是不正确的......我只是使用“git rebase v1.5”并检查了开发,它似乎已经工作了)。编辑:实际上,我这样做是有原因的,这是我在其他地方找到的一个不太好的例子。
  • 我认为 checkout 和 rebase 是执行此操作的标准方法。
  • 是的,可以单独进行,也可以按照 Karl 下面的描述,一步完成。我很惊讶 TortoiseGit 没有提供这种能力......这让我怀疑它是否可能。

标签: git rebase git-rebase git-tag


【解决方案1】:

您将使用以下命令:

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

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

【讨论】:

  • 看起来我最初搞砸了语法,从而导致了我的问题。而在 tortoisegit 的 rebase 选项中显然没有这个功能让我怀疑它是否可能。但是,事实证明,该线程比我预期的要提供更多信息。谢谢!
  • 跟进:我已经尝试过来回反复。这实际上证明比我使用 TortoiseGit 的原始测试合并分支到分支要简单(因为无法指定祖先标签,所以会引发不必要的合并“冲突”,这些冲突可以通过添加的信息自动解决,就像命令行 git 可以。它仍然是方便的软件,但显然它没有尽可能彻底地处理变基。
  • 在 v2.29 中,develop 部分不必是一个分支,但如果它不是一个分支(例如标签或哈希),您将被留在一个分离的 HEAD 中,这有其自身的危险。
猜你喜欢
  • 2011-12-06
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
  • 1970-01-01
  • 2013-07-22
  • 1970-01-01
  • 2020-09-19
  • 1970-01-01
相关资源
最近更新 更多