6

假设我们在 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' ')?
4

1 回答 1

6

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
于 2011-03-18T09:21:13.103 回答