我有两个分支(和主人)。分支2基于分支1是基于主。我已经提交了分支1进行审核,它有一些更改,我将其中一些更改重新编入历史记录并将结果合并到主数据中。
现在我需要在master上重新设置Branch 2以准备审查/合并。
问题是分支2仍然包含分支1的原始提交,它不再存在,因此git会混淆。我尝试使用rebase -i删除Branch 1的原始提交,但是Branch 2的提交不基于master-before-branch-1。
我需要做的是采取分支2,删除一些提交,并在一次操作中仅重新设置master上的剩余提交。但我只知道如何在两个不同的步骤中完成这两项操作。
我如何将我的分支部分重新分支到另一个分支,删除所有不具有共同祖先的提交,除了我指定的那些(例如从HEAD~2起)?
这是当前状态:
master new branch 1
- - - - - - - - - - - | - - - - - - - - -
\
\ branch 1
\ _ _ _ _ _ _ _
\
\ branch 2
\ _ _ _ _ _ _ _
我最终想要的是:
master new branch 1
- - - - - - - | - - - - - - - - - -
\
\
\
\ branch 2
- - - - - - - - -
实际的命令是:
git rebase --onto newbranch1 branch1 branch2
这将在qazxsw poi之后重播所有承诺在qazxsw poi之后到qazxsw poi HEAD。
正如new_branch1
所说的branch1
:
branch2
解决方案比我预期的要简单得多。事实证明,你可以提供Joshua Goldberg更多种类的rebase命令(我认为它只是为了改变历史而将一个分支重新定位到自己)。所以我只是运行in the comments并删除了那些额外的提交。