0

我最近从 CVS/SVN 切换到 Git,到目前为止我很享受。然而,在我最近的开发周期中,我忘记了在创建我的开发分支之前创建主分支的关键步骤。

在我的正常周期中,我有我的主干(稳定代码),然后是我的维护分支,我们在其中执行维护版本。在该维护分支中,我们有针对个别错误的开发分支。

通常,我的维护分支遵循我的版本。所以在我的后备箱里,我会有我的主要版本(即:ver 1、ver 2、ver 3)。然后是我的维护分支(即:1.1、2.1、2.2 等)。然后在我的维护分支中,我的这个版本的开发分支(即:1.2.1、2.1.3 等)。

在我的上一个周期中,我正在开发 2.2.1。我的上一个版本是 2.1.8。我不小心从我的 2.1 分支中分支出来并对其进行了处理,而不是首先创建一个 2.2 分支。现在,当我想合并我的更改时,我没有 2.2 分支可以合并回。

我“应该”做的是将我的 2.1 分支合并回主干(v2),然后从主干分支 2.2,然后从 2.2 分支分支 2.2.1。

既然我没有 2.2 分支,而我的 2.2.1 分支错误地脱离了 2.1,我该如何自救?

在 2.2.1 中已经完成了很多开发工作。

|-1.0
|-2.0
   |-2.1
      |-2.1.1
      |-2.1.2
      |-....
      |-2.1.8
      |-2.2.1        <---- wrong place!!!

本来应该:

|-1.0
|-2.0
   |-2.1
      |-2.1.1
      |-2.1.2
      |-....
      |-2.1.8
   |-2.2
      |-2.2.1       

谢谢,

埃里克

4

1 回答 1

1

首先,在 git 中,您可以随时更改内容并移动内容。所以不要惊慌。首先,创建整个目录的副本以“以防万一”在不同的副本上运行测试,然后再在主副本上进行。它会让你感觉更安全一些。

你需要做的是:

1) 在您希望的位置创建 2.2 分支。IE,看看你应该从哪里分支(就像git checkout v2.1我想的那样,但很难从你的描述中看出)。然后用类似的东西在那里创建 2.2 分支git checkout -b v2.2

2) 然后,您需要将 2.2.1 分支移至 v2.2 分支。这实际上很容易用 来完成git rebase,它在功能上将分支从树中的一个位置移动到另一个位置。您可以使用git checkout v2.2.1后跟来执行此操作git rebase v2.2,这会将在 v2.2.1 分支中所做的更改移动到新的 v2.2 分支中。

于 2013-02-13T17:59:21.990 回答