我想刪除一個in-between merge(remove,not squash),然後將最後2個提交移動到一個新分支。如何在git中刪除中間合併?
這是我目前git log --graph
:
* 3a5c453 - (2 hours ago) last commit (HEAD, master)
* b6c19f1 - (2 hours ago) Merge branch 'tade' into HEAD
|\
* | be356d0 - (2 hours ago) previous commit
| * 65328dc - (3 hours ago) some other commit in branch tade
我想這結束了:
* bbbbbbb - (some time in the future) a later commit on tade (tade)
* | aaaaaaa - (some time in the future) a later commit on master (master)
| * | 3a5c453 - (2 hours ago) last commit (HEAD, newone)
| * | be356d0 - (2 hours ago) previous commit
|/ |
| * 65328dc - (3 hours ago) some other commit in branch tade
我想用git rebase -i
除去與分支TADE合併,然後做一個git branch newone
和git reset --hard HEAD^2
將最後2個提交移動到新分支。但是當我做了rebase之後,它向我展示了tade分支中的所有提交,它們合併成了master和|不情願刪除它們。
有沒有更好的方法,還是應該繼續使用它?
編輯:我更新了預期的狀態圖,使其更清晰。 2個新的提交(aaaaaaa
和bbbbbbb
)僅存在來說明好一點(我希望)狀態
我真的很困惑那些垂直線在你想要的結果。上面有一些其他的提交,在分支tade上,以及......任何暗示的分支在最左邊? – Cascabel
如果您使用實際分支名稱標記當前HEAD並且告訴我們您是如何調用'rebase -i',這也會很有幫助。 – Cascabel
對不起,我是git log --graph輸出的新手。我會改變圖表以澄清預期的狀態。 – Kostas