代码之家  ›  专栏  ›  技术社区  ›  Alexis King

如何在重新定基之前插入提交?

  •  3
  • Alexis King  · 技术社区  · 14 年前

    我的历史现在看起来有点像这样:

                      origin/master
                            |
    A --- B --- C --- D --- E
                       \
                         -- F
                            |
                         master
    

    我想在E之后重新调整我的更改(提交F),但在提交E中有一些相当大的问题,我想首先纠正。基本上,这就是我希望能够做到的:

                      origin/master
                            |
    A --- B --- C --- D --- E --- G
                       \
                         -- F
                            |
                         master
    

    我 然后 想要在最后重新设置F的基础,以获得最终的、简单的结果:

                                  origin/master
                                        |
    A --- B --- C --- D --- E --- G --- F
    

    我如何在处理主干时“搁置”提交F,然后再重新建立它的基础?我想这会涉及 git branch ,但我所知道的git不够多,无法知道要发出的命令的顺序。最好的方法是什么?

    2 回复  |  直到 14 年前
        1
  •  2
  •   xaizek MPelletier    14 年前

    创建一个指向 F 提交:

    git branch tmp
    

    去除 F 提交自 master 分支机构:

    git reset --hard HEAD~1
    

    进行修复并提交:

    git commit
    

    添加 F 在当前基础上提交 主人 分支(这可能会导致冲突,请解决冲突):

    git cherry-pick tmp
    

    删除临时分支:

    git branch -d tmp
    

    所以你并不真的需要 git rebase 在这里,它适用于更复杂的事情,或者至少不适用于使用一个提交。

        2
  •  0
  •   Yair Zaslavsky    14 年前

    我假设你有一个单独的F分支,如果没有的话——我错过了,你应该创建它。
    我建议您不要使用commit G处理master,但也要有一个单独的分支
    请为其创建一个单独的分支。
    1.然后,尝试将包含f的分支相对于该分支重新定基(可能使用git-rebase-toon,
    尽管我认为还有另一种方法)
    另一种方法是在包含F的分支上执行git格式的补丁origin/master,然后在包含G的分支上应用此补丁。
    当然,你可能会遇到冲突。
    根据我的经验,选项1更好,出于某种原因,git-apply和git-am比对另一个分支执行重新定基更“脆弱”(对不起,这是一个糟糕的术语)。

    推荐文章