【发布时间】:2016-04-27 20:18:18
【问题描述】:
我有两个分支(和主分支)。 Branch 2 基于 Branch 1 基于 master。我已经提交了 Branch 1 进行审核,它有一些更改,我将其中一些更改重新设置为历史记录并将结果合并到 master。
现在我需要在 master 之上 rebase 分支 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。看看这是否有帮助:stackoverflow.com/questions/28715619/… -
git rebase --onto 几乎为我工作。我做了
git rebase --onto master --root HEAD~1,但由于某种原因,它选择了三个提交给我,而不是只有HEAD~1及更高版本。此外,我现在不是重新设置分支,而是处于分离的 HEAD 状态。
标签: git