1

在我将我的功能分支合并到development分支之后。我开始了新的分支并已经做出了一些提交。

<D1><-------------------<D2>                   development
  \                     /  \
   <f11><--<f12><--<f13>    \                  add-stuff-f1
                             \
                              <f21><--<f22>    add-stuff-f2

我意识到f21并且f22应该在add-stuff-f1eba 因为它们确实相关。我想要这样的东西:

<D1><-----------------------------------<D2>   development
  \                                     /
   <f11><--<f12><--<f13><--<f21><--<f22>       add-stuff-f1

我可以用 Git 做一些简单的动作来做到这一点吗?

4

2 回答 2

2

第一的,

git rebase --onto add-stuff-f1 development add-stuff-f2

如果在合并过程中出现冲突,请手动解决它们然后运行

git rebase --continue

然后

git checkout add-stuff-f1

并将其重置为新的 add-stuff-f2 头:

git reset --hard add-stuff-f2

现在,您可以根据需要删除 add-stuff-f2 。

git branch -d add-stuff-f2

下一个

git checkout development

并摆脱您之前的合并

git reset --hard HEAD^

最后像以前一样再次合并到开发中

git merge --no-ff add-stuff-f1

你完成了,祝你好运。

于 2013-09-13T17:28:11.757 回答
1

将 add-stuff-f2 附加到 add-stuff-f1 而不从 D1 和 D2 之间的开发分支中引入所有东西是一个挑战。为了解决这个问题,我会从 add-stuff-f2 中挑选提交到 add-stuff-f1 中。

如果 D1 和 D2 之间没有变化,那么这个问题其实很简单:

add-stuff-f1 和 development 应该指向同一个提交。add-stuff-f2 在这两个提交之前线性领先。

要解决做两个快进合并:

switch to the add-stuff-f1 branch. Do "git merge add-stuff-f2". 
switch to the development branch. Do "git merge add-stuff-f2"

结果会将 development 和 add-stuff-f1 指针移动到与 add-stuff-f2 相同的提交。然后您可以删除 f2(如果您不再需要它),并在 f1 上进行更多提交以继续开发功能一。

于 2013-09-13T16:38:39.103 回答