我怎样才能从特定的开发分支提交到特定的主分支提交
How can I rebase from specific develop branch commit to specific master branch commit
我有这样的主分支:
A->B->C->D->E
像这样的开发分支:
A->B->C->D->E->F->G->H->I
^
|- This should be used
我想在 D
之上应用 G
。我该怎么做?
我试过这个:
git checkout develop
git rebase 82c7b6a
但这给我带来了合并冲突。
我的主要目标是保留 master 分支并删除 develop 分支。
主要:A->B->C->D->G->H->I
我会挑选那个提交。
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结帐大师
git 还原 E
git 精选 G H I
git分支-D开发
如果你是唯一的用户试试这个。
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
终于可以删除分支 develop
7. git branch -D develop
如果你想跳过 E
-F
你可以做完全明确的变基:
git rebase --onto master G~1 develop
您将不得不解决潜在的冲突。
完成后,您可以移动您的主人并放弃开发:
git push . develop:master
git checkout master
git branch -d develop
我有这样的主分支:
A->B->C->D->E
像这样的开发分支:
A->B->C->D->E->F->G->H->I
^
|- This should be used
我想在 D
之上应用 G
。我该怎么做?
我试过这个:
git checkout develop
git rebase 82c7b6a
但这给我带来了合并冲突。
我的主要目标是保留 master 分支并删除 develop 分支。
主要:A->B->C->D->G->H->I
我会挑选那个提交。
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结帐大师 git 还原 E git 精选 G H I git分支-D开发
如果你是唯一的用户试试这个。
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
终于可以删除分支 develop
7. git branch -D develop
如果你想跳过 E
-F
你可以做完全明确的变基:
git rebase --onto master G~1 develop
您将不得不解决潜在的冲突。
完成后,您可以移动您的主人并放弃开发:
git push . develop:master
git checkout master
git branch -d develop