1

我将我的开发分支合并到我的主分支中,并从那时起进行了许多更改。如何从主分支重新拆分开发分支并维护更改。

master -------merged -------changes -- mstr & dev ------need to split  ----master
dev------------^                                             \------------- dev
4

2 回答 2

2

如果您继续在您的dev分支上进行开发master,您只需要dev在以下基础上重新设置master

首先,您合并devmaster

x--x--x--x---X (master)
 \          /
  y--y--y--y (dev)

然后你在dev和上进行进化master

x--x--x--x---X--x--x (master)
 \          /
  y--y--y--y1--z--z (dev)

如何从主分支重新拆分开发分支并维护更改。

git checkout dev
git rebase --onto master y1 dev

您可以尝试git rebase -p, 来保留合并提交,但在您的情况下,简单地重新设置您感兴趣的部分,即 ' z' 提交,更简单。

x--x--x--x---X--x--x (master)
 \          /       \
  y--y--y--y         z'--z' (dev rebased)
于 2013-09-02T20:17:40.823 回答
0

根据您的描述,您希望(形象地)将您的“主”分支移回您进行合并之前的位置,并且您希望您当前的开发工作位于您的“开发”分支上。

如果我正确理解您的愿望,那本质上是两个分支指针的交换,并进行了调整以确保您没有指向合并提交本身。

在 master 上,用于git branch --move master new_develop将 master 重命名为新名称。

然后假设你的旧开发分支指向那个旧的合并提交(检查这个gitk development),用于git branch master development^2重新创建 master 但在开发合并的第二个父级(注意交换的参数顺序)。

最后,git branch --move new_develop development带回您的旧分支名称。gitk使用或您最喜欢的工具检查所有内容。

于 2013-09-02T21:31:52.770 回答