我有一个很长的线性git历史。我想重新绑定一些提交,所以就好像我创建了一个功能分支,并使用git merge --no-ff master
将它合并回主。断线git提交到两个合并分支
当前
A -> B -> C -> D -> E -> F
master
期望
master
A -> B -> E -> F
\ /
C -> D
feature
我认为做这样的事情
git checkout D
git checkout -b feature
git rebase B
git merge --no-ff E
但D
已经在它的历史B
,所以这并不做任何事情。我知道如何将E
关闭B
(Split a git branch into two branches?),但在这里,所需版本的E
有两个父母。
一些额外的细节是,最初我的项目结构像Desired
,而E
是一个真正的合并提交。我以某种方式然后使用git rebase
线性化我的历史记录,以从旧提交中删除一些不需要的文件。