2012-08-16 36 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更「脆弱」(對於壞名字感到抱歉)。

相關問題