2017-05-19 19 views
0

我有一個git回購c1作爲頭提交。由於我必須同時處理兩個功能,因此我創建了一個分支(my branch)。我一直致力於main branch中的一個功能及其子功能和my branch中的另一功能。這就是我本地回購的樣子。如何合併提交從分支機構以特定的順序

c0->c1->c3->c4->c5->c6 (main branch) 
    \ 
    c2 (my branch) 

所有來自main branch的新提交已被推送到遠程回購。現在功能c2已完成,並且它必須與main branch合併。這是我的本地回購應該如何。

c0->c1->c3->c4->c5->c6->c2 

如何獲取此結構? git cherry-pick c2無法引發合併衝突。

+0

你嘗試解決這些合併衝突?給你說你想要的,我不認爲你有多少選擇。 –

+0

我更擔心這個命令。櫻桃選擇確保c2在c6之後?或者它會嘗試在c1和c2之間輸入它? –

回答

1

照顧衝突,你應該沒問題。衝突是我們工作的一部分。例如,如果您嘗試合併,則會發生同樣的情況。

+0

訂單怎麼樣?如果我解決衝突,c2會在c5之後出現嗎? –

+0

我想你會在_main branch_上工作(此刻正在c6上),然後你會選擇c2。這將帶來c2_after_c6。例如,它不是**,就像git分析創建c2的時間,以便奇蹟般地將其插入c3之前。它會將c2放在c6之上。從技術上講,這不是真正的C2,它是C2的等價物(通常在文件中被稱爲_c2'_)。它會保留與c2相同的作者,但提交者將成爲櫻桃選擇的人。 – eftshift0

+0

...這與c2完全不同。 – eftshift0

1

通常你git merge執行此...

在主:

git merge c2 

你然後在合併的點解決衝突。鑑於歷史背後有多遠,並且根據什麼觸及,衝突可能會發生。

2

如果有超過1提交您更好地利用底墊中,不摘櫻桃:

git rebase c1 c2 --onto main_branch

衝突仍然是可能的,當然。在rebase期間解決它們; git在衝突時停止打印幫助。

0

解析如下:

git checkout my_branch 
git rebase master 
<resolve any conflicts> 
git checkout master 
git merge my_branch 
相關問題