首页 > 解决方案 > 在 master 之上重新设置已合并的分支

问题描述

我遇到了以下问题。如图所示,我有两个 Git 分支(第一个:提交 E、C、B 和第二个:提交 D),从分叉并合并到主分支(F 和 A)中

Git 树

我想将 D 放在 A 的顶部并将其从当前所在的位置删除。这有可能吗?

标签: gitgit-mergegit-rebase

解决方案


我看到的唯一方法是将 master 重置为F,将yellow分支重置为E,cherry-pickCByellow分支上,合并yellowmaster最后 cherry-pick D

backup在接触任何东西之前,您应该在当前状态下创建一个分支master,以便在出现任何问题时能够重置到当前状态,并且可以轻松访问您需要挑选的提交 ID。命令序列将是这样的:

#on master branch, with no unstaged or uncommited changes:
git branch backup
git reset --hard F
git checkout yellow
git reset --hard E
git cherry-pick C
git cherry-pick B

#merge yellow branch into master, however you usually do that

git checkout master
git cherry-pick D

警告:未经测试。

正如我在评论中所说,如果有人已经在旧主人之上工作,这将把事情搞得一团糟。

编辑:如果是从toC的合并提交,它显然不应该被精心挑选并且可以被忽略。Dyellow


推荐阅读