2014-12-31 182 views
0

在去年開啓和關閉一個項目之後,我設法讓自己處於一種混帳狀態。這是發生了什麼:Git rebase to older commit

  1. 開始生產版本。我們將這稱爲A

  2. 做了一些從未完成的大功能更改。意外地將此轉交給master分支。代碼從未投入生產。我們將這個提交B

  3. 幾個月過去了,我需要製作一些修補程序。使用「git checkout A .」恢復到A提交,使我的修補程序更改,然後在B頂部的主分支上提交爲C

  4. 想完成提交B的功能。使用「git checkout B -b featureBranch」以獲得一個新的分支,其中包含來自落實B的所有未完成功能。但是,我的修補程序中沒有包含C

如果我經營的是「git rebase master」,我所有的承諾C修復得到應用,但我失去了從提交B我的變化。

如何提交我的C提交更改,而不會丟失我的B提交?

+0

請用圖表說明。 –

回答

3

最簡單的方法將是一個摘櫻桃(git cherry-pick):

git checkout featureBranch 
git cherry-pick C 

如果,以後,featureBranch將簡單地取代目前master,將工作。