我分叉了一個項目(來自分支A),似乎由於某種原因它在另一個分支(B)中繼續。從一個git分支移動到另一個只應用我的更改
我試圖將我的fork(M)與新分支(B)合併,但這導致了很多衝突。衝突是因爲新分支(B)分叉了較早的分支(O),並且A的部分更改未被分配給B.
現在我想將所有我的更改(在分支M中)與新支路B沒有衝突,取消由A在我的叉子M.
作出原點O的所有變化我要的是紅色。我怎麼做?
我分叉了一個項目(來自分支A),似乎由於某種原因它在另一個分支(B)中繼續。從一個git分支移動到另一個只應用我的更改
我試圖將我的fork(M)與新分支(B)合併,但這導致了很多衝突。衝突是因爲新分支(B)分叉了較早的分支(O),並且A的部分更改未被分配給B.
現在我想將所有我的更改(在分支M中)與新支路B沒有衝突,取消由A在我的叉子M.
作出原點O的所有變化我要的是紅色。我怎麼做?
一個選擇是櫻桃採摘的A
提交後發生的M
分支提交的範圍,從B
分支:
git checkout B
git cherry-pick 2an38xma..f8s3kow2
這裏2an38xma
是SHA-1散列,或獨特的M
分支中的A
提交的標識符。您可以通過從A
分支中輸入git log
並向下滾動直至找到A
提交來找到此提交哈希。在git cherry-pick
中使用的範圍表示在之後提交提交直到M
分支中的最終提交f8s3kow2
。
請記住,您可能會在每次提交時發生合併衝突。
首先製作原M
分支的副本git branch M.old M
,這樣,如果事情最終不像您想要的那樣,您可以輕鬆地重新開始。
然後你就可以變基的M個轉移收受來自B開始
git rebase --onto B A M
這應該給你圖紙完全相同的紅色M個轉移。
A
這裏標記了您想要考慮更改的起點(不包括)以及端點(包括)的起點(包括),它們將被更新爲變形結果。
我不關注正在發生的事情。你可以用分支圖來澄清你的問題嗎? –
我添加了一個圖表,希望你能理解,我想要「分叉」B,以及我對分叉A所做的更改。 – prognoza
我認爲你的意思是你在提交O和A之前提交了M但現在只想在B的頂部應用最後一個提交,它的圖中也有O,但與A和(當前)M位於不同的分支。在這種情況下,是否考慮過「櫻桃採摘」?您可能仍然需要解決一些衝突。 – jonrsharpe