当我忘记创建一个主分支时,如何“合并”一个git分支

时间:2013-02-13 17:08:44

标签: git branch branching-and-merging

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

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

通常,我的维护分支遵循我的版本。因此,在我的主干中,我将拥有我的主要版本(即: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       

谢谢,

埃里克

1 个答案:

答案 0 :(得分:1)

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

您需要做的是:

1)创建你想要的2.2分支。 IE,查看分支的位置(我认为git checkout v2.1之类的内容,但很难从您的描述中看出来)。然后用git checkout -b v2.2

之类的东西在那里创建2.2分支

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