2017-04-22 54 views
0

當使用git cherry-pick時,發生衝突。
目標分支引起的衝突缺少工作分支。
缺乏一些提交,我不能櫻桃選擇我的新提交到目標分支。
問題是我怎麼能找到哪個衝突提交,當我櫻桃選擇我的新提交目標分支是缺乏一些提交,並列出confilct提交ID?當使用git cherry-pick時,我們如何得到我的提交,與哪個提交發生衝突?

對不起我的泳池英語。

Branch A, whith commit 1,2,3,4,5,6 
Branch B, with commit 1,3 

提交6是用準提交4. 當我櫻桃挑選提交6至支路B,衝突發生。

是否有任何簡單的方法來找出哪個提交是準提交6. ,這樣我可以櫻桃挑這個提交(像提交4),和比櫻桃挑選提交6,而不是提交4 & 5都。

謝謝大家。

+0

http://stackoverflow.com/q/42531657/2303202 – max630

+0

@SITU你是什麼意思提交6是否與提交4相關?你的意思是4和6修改相同的文件或6從4合併?順便說一句,即使它在rebase期間顯示衝突,您可以手動或自動解決衝突來完成櫻桃選擇。如果你用grah來說明你的分支結構,它會更清楚。 –

+0

修改相同的文件。像@Mort說,我想找到一個更有效的方法 – SITU

回答

0

如果你想在櫻桃採摘前找到在分支A上的原始添加/更改文件的提交。您可以使用:

git log B..A filename 

此命令將輸出,修改文件的提交和提交只屬於分支A。你可以找到的最早提交輸出的底部,然後摘櫻桃這次提交的分支B

git checkout B 
git cherry-pick <the earliest commit you found> 
0

我正要編輯你的問題,但編輯過程很完整,我會重寫你的原始問題。

也許是這樣的:

「當試圖git cherry-pick A,我得到一個衝突這種衝突是因爲犯BA祖先是無法在目標分支,沒有它,提交A導致巨大的。衝突在目標分支。我如何識別提交B?「

這不是一個混帳問題,這是一個通用的修訂控制問題。可能只有一個提交會阻止A乾淨地進入目標分支(或者甚至有小衝突),或者可能有多個提交阻止A。看看選擇櫻桃時出現的衝突,並查看A中更改的所有文件,並對每個文件執行git log A -- <file>並嘗試找出可以解決衝突的方法。然後嘗試櫻桃採摘各種組合git cherry-pick B A,直到你找到有效的東西。

+0

非常感謝。這是一種方法。但是,當A更改了大文件時,這樣做太難了。特別是許多承諾與A相關聯。 – SITU

+0

硬問題有很難解決的問題。在你上面的例子中,解決這個問題的程序化方法是找出所有不在'B'中的提交:'(2,4,5)',並嘗試所有提交的組合(包括多個) 6'進去。 – Mort

相關問題