Rebase 已经合并到 master 之上的分支

Rebase already merged branch on top of master

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

我想把D放在A的最前面,然后把它从现在所在的地方移走。这有可能吗?

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

您应该在触摸任何内容之前在当前 master 的状态下创建一个 backup 分支,以便能够在出现任何问题时重置为当前状态,并且可以轻松访问您需要挑选的提交 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

警告:未测试。

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

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