我有两个分支(和主)。分支2是基于分支1是基于主分支的。我提交了分支1进行审查,它有一些变化,我将其中一些更改重新编入历史记录,并将结果合并到主数据库中。只重建部分分支
现在我需要在master上重新分支分支2以准备审查/合并。
问题是分支2仍然包含分支1的原始提交,它不再存在,所以git变得困惑。我尝试了rebase -i删除了分支1的原始提交,但分支2的提交不基于master-before-branch-1的提交。
我需要做的是采取分支2,放弃一些提交,并在一次操作中将剩下的提交放在master之上。但我只知道如何在两个不同的步骤中完成这两个操作。
如何将我的分支的一部分重新绑定到另一个分支上,删除所有不是共同祖先的提交,除了我指定的提交(例如,从HEAD〜2起)?
这里的当前状态:
master new branch 1
- - - - - - - - - - - | - - - - - - - - -
\
\ branch 1
\ _ _ _ _ _ _ _
\
\ branch 2
\ _ _ _ _ _ _ _
我想落得什么:
master new branch 1
- - - - - - - | - - - - - - - - - -
\
\
\
\ branch 2
- - - - - - - - -
代表您的回购状态的ASCII图将有所帮助。乍一看,我会说你正在寻找['git rebase --onto'](https://git-scm.com/docs/git-rebase)。看看是否有帮助:http://stackoverflow.com/questions/28715619/how-can-i-rebase-part-of-a-branch-to-the-master-branch/28715930#28715930 – Jubobs
更好!另请参见http://stackoverflow.com/questions/25488138/move-initial-commits-off-master-to-another-branch-in-git/25490288#25490288 – Jubobs
git rebase --onto几乎为我工作。我做了'git rebase - 主人 - 根HEAD〜1',但由于某种原因,它选择了三次提交,而不是只有'HEAD〜1'以上。此外,我现在处于独立HEAD状态,而不是重新装订我的分支。 – Puppy