合并/重新绑定Git中的“断开连接”分支

时间:2011-03-18 09:07:17

标签: git branching-and-merging

假设我们在Git中有以下情况:

      X---Y feature
     /
A---B---C---D edge

现在我重新定义edge分支,稍微更改B提交(使用edit),所以它现在看起来像这样:

      X---Y feature

A---E---C'---D' edge

C'和D'与C和D的提交相同,但在E之上应用(并注意feature分支中的X已断开连接。)

现在我该怎么做:

  1. 重新基础/合并feature分支,以便其提交看起来好像是在D'上面应用的那样?
  2. 重新引用/合并feature分支,使其提交看起来好像是应用于E之上,但没有单独的“合并分支...”提交(并且C'和D'被重写成为C''和D'')?

1 个答案:

答案 0 :(得分:5)

X本身不会断开连接,它仍然有原始B作为其父级。如果您希望随后在feature之上重新定位edge,那么:

git checkout feature
git rebase edge

如果您希望更改树,使其具有与原始版本类似的结构,但X作为E的子项,那就是:

git checkout feature
git rebase --onto <sha-of-E> <sha-of-B> feature