2017-12-27 1097 views
0

我想將我的特性分支合併到develop分支上。然而,其中一個提交恢復了我現在想要的提交。包括恢復提交的Rebase

 
* develop - merge revert PR 
|\ 
| * Revert undesired merge 
|/ 
* Merge (undesired) 
|\ 
| * commit A 
|/ 
| 
... (lots of commits) 
| 
| * feature - commit B 
| * commit A' 
|/ 
* 

git rebase -i develop不顯示提交A'。我嘗試過各種選項(-p,--keep-empty,-f),但沒有成功。

我如何結束了

 
    * feature - commit B 
    * commit A' 
/
* develop - merge revert PR 

沒有單獨挑肥揀瘦? (不止兩個提交 - 這個例子簡化了。)

(注意:最近的提交是在圖的頂部,還要注意A和A'具有相同的內容;也就是說,它們應用相同的更改。)

+0

第一個圖不清楚。 '功能'與'develop'有關。正如你所畫的那樣,我會認爲它們是獨立的樹,恰好在同一個數據庫中,但從你所說的我對此表示懷疑。無論如何,它看起來並不像「A」在「開發」的歷史中的任何地方,那麼爲什麼*會有一個選項讓它在「開發」的基礎上出現? –

+0

@MarkAdelsberger我修改了圖表來顯示關係。 – TrueWill

+0

我會建議不要恢復合併。只需重置。 – evolutionxbox

回答

2

您需要幫助rebase從尚未合併「提交A」的時間點算出其待辦事項列表。

相反的git rebase -i develop,請嘗試:

git rebase -i undesired~ --onto develop 

...其中undesired或者是在一個分支或恢復合併的SHA提交。

另一種選擇是:

git rebase -i HEAD~2 --onto develop 

...意爲 「最後的兩次提交重訂到develop」。

+0

第一個選項完美運作。謝謝!! – TrueWill