【问题标题】:How can I insert a commit before rebasing?如何在变基之前插入提交?
【发布时间】:2012-08-12 10:34:11
【问题描述】:

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

                  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 来知道要发出的命令序列。最好的方法是什么?

【问题讨论】:

    标签: git git-branch git-rebase git-commit


    【解决方案1】:

    创建一个指向您的F 提交的分支:

    git branch tmp
    

    master 分支中删除F 提交:

    git reset --hard HEAD~1
    

    进行修复并提交:

    git commit
    

    在当前的master 分支上添加F 提交(这可能会导致冲突,因此请解决它们):

    git cherry-pick tmp
    

    移除临时分支:

    git branch -d tmp
    

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

    【讨论】:

      【解决方案2】:

      我假设你有一个单独的 F 分支,如果没有 - 我错过了,你应该创建它。
      我建议你不要在提交 G 的 master 上工作,但也要有一个单独的分支
      请为其创建一个单独的分支。
      1. 然后,尝试针对该分支重新设置包含 f 的分支(可能使用 git rebase --onto,
      虽然我认为还有另一种方法可以做到这一点)
      另一种方法是在包含 F 的分支上执行 git format-patch origin/master,然后在包含 G 的分支上应用此补丁。
      你当然可能会遇到冲突。
      根据我的经验 - 选项 1 更好,由于某种原因, git apply 和 git am 比对另一个分支执行变基更“脆弱”(对不起这个坏词)。

      【讨论】:

        猜你喜欢
        • 2020-04-25
        • 2010-10-13
        • 2023-02-20
        • 1970-01-01
        • 2017-09-09
        • 2015-04-22
        • 2015-03-30
        • 2017-04-29
        • 2015-05-07
        相关资源
        最近更新 更多