`git rebase` 没有更新分支?

`git rebase` not updating branch?

我有这个:

        master
        |   foo
        |   |
        v   v             bar
A---B---C---D             |
             \            v
              \---E---F---G

我想要这个:

        master
        |   foo
        |   |
        v   v         bar
A---B---C---D         |
         \            v
          \---E---F---G

所以认为我需要做的:

git checkout bar
git rebase master

但Git不这么认为:

Current branch bar is up-to-date.

一切保持原样。

我需要什么才能运行让Git做我想做的事?

提交 D 包含在分支 bar 中。一种选择是执行 interactive rebase 并从分支 bar.

中删除提交 D
  1. git checkout bar
  2. git rebase -i master
  3. 在文本编辑器中删除提交行 D
  4. 保存并关闭

只要您在提交 D(或包括提交 D)(例如 foo)上有标记或分支,您就不应该丢失它。还请记住,如果 D 之后的提交取决于 D 中的更改,您将遇到冲突。

您正在执行的 git rebase 版本,获取分支 bar 上尚未在 master 上的所有提交,并将它们写入 master .这是 DF 的提交,这不是您想要的,因为它不会跳过提交 D。一种解决方案是使用 --onto 标志:

git checkout bar
git rebase --onto master foo

此版本的 rebase 将获取分支 bar 上而非分支 foo 上的所有提交,并将它们重写到 master 上。这将准确地生成您想要的 bar 的历史记录。