Git将一个分支重设为另一个分支,不包括从父级合并

Git将一个分支重设为另一个分支,不包括从父级合并,git,rebase,Git,Rebase,我想将一个功能分支重新设置到另一个永久偏离主功能的功能分支上。cherry pick有太多的承诺,所以我认为重新基础将是一种方式,但我不知道如何排除在D之后对master所做的更改 基本上,我想: 首先: E-F-G-H [feature_2] / A-B-D-I-K [master] \ \ \ C-G-J-L-M-N [feature_1] 以: G-M-N [feature_1] /

我想将一个功能分支重新设置到另一个永久偏离主功能的功能分支上。cherry pick有太多的承诺,所以我认为重新基础将是一种方式,但我不知道如何排除在D之后对master所做的更改

基本上,我想:

首先:

      E-F-G-H [feature_2]
     /
A-B-D-I-K [master]
   \   \ \
    C-G-J-L-M-N [feature_1]
以:

              G-M-N [feature_1]
             /
      E-F-G-H [feature_2]
     /
A-B-D-I-K [master]
我尝试了以下方法,但它似乎也适用于提交J和L

git checkout feature_1
git rebase --onto feature_2 B

您需要确保
master
是rebase操作的“上游”-这是决定将重写哪些提交的因素-然后使用
-
参数,如您所述

git checkout feature-1
git rebase --onto feature-2 master
或者单命令速记

git rebase --onto feature-2 master feature-1

所以你只想重写你的
功能的历史?你可以试试,例如,
rebase--interactivehead~6
。当你往里看的时候,rebase是一个很好的选择。。。。所以,它不像一个再基地可以“自动”摆脱冲突时发生的樱桃采摘。当应用M和N时,它们可能会出现,对吗?这是因为这些更改会覆盖来自J和L合并的更改。。。所以这是没办法的,显然。。。除非你在你将要进行的再基地/樱桃采摘中带来一些。