如何樱桃挑选其他合并路径?

时间:2012-01-23 22:02:18

标签: git merge git-branch cherry-pick

我有这个结构:

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

B,C和D提交是功能分支路径。 A是一个共同的基础。此功能作为E commit合并回master。我已标记(自动)提交A.

我想自动无需用户干预(来自脚本),无论在功能分支中有多少提交,在另一个分支中选择“mytag”到“master”作为A,E(在本例中)。 / p>

现在,如果我这样做:

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将在“其他”分支中被挑选出来。

1 个答案:

答案 0 :(得分:0)

这就是答案:

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

- first-parent cherry-pick 的未记录选项。我在 log 命令中看到它,它也适用于前者。它正是我所需要的。要遍历第一个父级,而不是默认分支。

git log --first-parent mytag..master

仅返回 A E 提交。 -m 1 选项仅用于合并提交,而非合并提交则失败,反之亦然。所以我试着,如果它失败了 - 没有。