将我的功能分支合并到development
分支后。我已经开始新的分支并且已经做了一些提交。
<D1><-------------------<D2> development
\ / \
<f11><--<f12><--<f13> \ add-stuff-f1
\
<f21><--<f22> add-stuff-f2
我意识到f21
和f22
应该在add-stuff-f1
ebacause,因为它们确实相关。我想有这样的事情:
<D1><-----------------------------------<D2> development
\ /
<f11><--<f12><--<f13><--<f21><--<f22> add-stuff-f1
我可以用Git做一些简单的动作吗?
答案 0 :(得分: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
你已经完成了,祝你好运。
答案 1 :(得分:1)
将add-stuff-f2附加到add-stuff-f1而不从D1和D2之间的开发分支引入所有内容,这是一个挑战。要解决这个问题,我会从add-stuff-f2中选择提交到add-stuff-f1。
如果D1和D2之间没有变化,那么这个问题实际上很简单:
add-stuff-f1和开发应该指向同一个提交。 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"
结果将把开发和add-stuff-f1指针移动到与add-stuff-f2相同的提交。然后你可以删除f2(如果你不再需要它),并在f1上做更多的提交以继续开发第一个功能。