2012-01-23 54 views
0

我有這樣的結構:如何櫻桃選擇其他合併路徑?

B - C - D <- feature 
/  \ 
A-----------E <- master 
^ mytag 

B,C和d是提交特性分支路徑。 A是一個共同的基礎。 E提交將此功能合併回主服務器。我已經標記(自動)提交A.

無需用戶干預(從腳本),無論在功能分支中有多少提交櫻桃選擇「mytag」爲「master」作爲A,E (在這種情況下)在另一個分支。

現在,如果我做的:

git checkout other  
git cherry-pick mytag..master 

它將搭載A,B,C,d和E提交。我希望它僅從主分支中提取提交,即A和E. 注意:我不想以相反的方式合併到E中。我希望它的功能進入主人。 A到E並不確定是否分支。它可能是A --- E.只需要像「..」這樣的操作符,但要使用其他分支的方式。

感謝您的幫助!

另外: 第三個分支是我應該摘櫻桃,應該是一個後:

F - G - H - A - E <- other 

即A和E將是精挑細選的「其他」分支。

+0

不是很清楚目標是什麼。您可以提供操作完成後DAG的外觀圖嗎? –

+0

它應該看起來像: F - G - H - A - E - - 其他 即A和E將被挑選在「其他」分支。 –

+0

如果你更新你的答案,我們可以看到你的漂亮的ASCII藝術更好:) –

回答

0

這就是答案:

call git cherry-pick -m 1 --first-parent mytag..master 
if %errorlevel% == 128 then call git cherry-pick --first-parent mytag..master 

--first父母無證選擇櫻桃採摘。我看到它在日誌命令,它也爲前者工作。它正在做我所需要的。爲了遍歷第一個父項,不是默認的分支。

git log --first-parent mytag..master 

是隻返回一個Ë提交-m 1選項僅用於合併提交,並且未合併提交而反之亦然。所以我嘗試着,如果失敗 - 沒有。