代码之家  ›  专栏  ›  技术社区  ›  ash

`git rebase`不更新分支?

  •  1
  • ash  · 技术社区  · 7 年前

            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.
    

    2 回复  |  直到 7 年前
        1
  •  2
  •   Code-Apprentice    7 年前

    的版本 git rebase 你正在做的,承担了分支上的所有提交 bar master 把它们写在 主人 D F ,这不是您想要的,因为它不会跳过提交 . 一种解决方法是使用 --onto 标志:

    git checkout bar
    git rebase --onto master foo
    

    此版本的rebase将接受分支上的所有提交 酒吧 但不是在树枝上 foo 主人 酒吧

        2
  •  2
  •   Bill    7 年前

    提交 D 包含在分支上 bar . 一个选择是做一个 interactive rebase 删除并提交 D级 从分支 酒吧 .

    1. git checkout bar
    2. git rebase -i master
    3. D级
    4. 保存并关闭

    D级 (或包括提交) D级 foo )你不应该失去它。还要记住,如果 D级 取决于 D级 你会有冲突。