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 C
和 B
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
是从 D
到 yellow
的合并提交,它显然不应该被挑选出来,可以忽略。
我遇到了以下问题。我有两个 Git 分支(第一个:提交 E、C、B,第二个:提交 D),如图所示,从主分支(F 和 A)分叉并合并到主分支(F 和 A)
我想把D放在A的最前面,然后把它从现在所在的地方移走。这有可能吗?
我看到的唯一方法是将 master 重置为 F
,将 yellow
分支重置为 E
,cherry-pick C
和 B
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
是从 D
到 yellow
的合并提交,它显然不应该被挑选出来,可以忽略。