2012-08-16 38 views
2

我有一个历史,看起来有点像这样现在:如何在重新绑定之前插入提交?

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

我要重订è后,我的变化(提交F),但也有一些相当重大问题提交EI想先纠正。基本上,这是我希望能够去:

    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

创建一个分支指向您F承诺:

git branch tmp 

删除Fmaster分公司承诺:

git reset --hard HEAD~1 

使你的修改,并提交它们:

git commit 

添加F提交当前master分支的顶部(这可能会导致冲突,所以解决这些问题):

git cherry-pick tmp 

删除临时党支部:

git branch -d tmp 

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

0

我假设你有一个单独的F分支,如果没有 - 我错过了,你应该创建它。
我建议你不要对提交G的主人工作,但也有它的一个单独的分支
请为它创建一个单独的分支。
1.然后,尝试重新绑定包含f的分支(可能使用git rebase --onto,
,尽管我认为还有另外一种方法可以这样做)
另一种方法是执行此操作包含F的分支上的git format-patch origin/master,然后在包含G的分支上应用此修补程序。
您当然可能会遇到冲突。
根据我的经验 - 选项1更好,出于某种原因,git apply和git am比对另一个分支执行rebasing更“脆弱”(对于坏名字感到抱歉)。

相关问题