我有这样的主分支:
A->B->C->D->E
这样的开发分支:
A->B->C->D->E->F->G->H->I
^
|- This should be used
我想在G
之上应用D
。我怎么能这样做?
我试过了:
git checkout develop
git rebase 82c7b6a
但这给了我合并冲突。
我的主要目标是保留主分支并删除开发分支。
主要:A->B->C->D->G->H->I
答案 0 :(得分:2)
我会挑选那个提交。
git checkout master
git cherry-pick G
git cherry-pick H (EDIT 3)
git cherry-pick I (EDIT 3)
git branch -D develop
修改强>
我没有看到你不想要E.然后就是:
git checkout master
git reset --hard HEAD^1
git cherry-pick G
git cherry-pick H (EDIT 3)
git cherry-pick I (EDIT 3)
git branch -D develop
编辑2
@ckruczek指出更多故障安全解决方案将使用rebase interactive。
git checkout master
git reset --hard develop
git rebase -i D
git branch -D develop
使用您不想要的提交删除这些行。
编辑4
由于这是历史重写,使用上层方法可能会遇到严重问题。
我建议使用以下解决方案:
A->B->C->D->E->!E->G->H->I
要做到这一点: git checkout master git revert E Git cherry-pick G H I git branch -D develop
答案 1 :(得分:0)
如果您是唯一的用户,请尝试此操作。
1. git checkout develop
2. git rebase --onto master~1 F I /* move commits G, H and I on master~1 (D) */
3. git checkout I
4. git rebase master
最后你可以删除分支开发
7. git branch -D develop
答案 2 :(得分:0)
如果您想跳过E
- F
,您可以完全明确变基数:
git rebase --onto master G~1 develop
您必须解决潜在的冲突。
当你完成后,你可以移动你的主人并放弃开发:
git push . develop:master
git checkout master
git branch -d develop