如何将一系列非合并提交复制到新分支?

时间:2013-06-20 21:48:44

标签: git

我有一个feature/branch,它在各个点上将develop分支合并到其历史记录中。我想采取所有非合并提交(即只有最初在特征分支上提交的提交)并将它们复制到一个新的分支(基于master),这样我就没有任何特有的提交{ {1}}在新分支中分支。

我找到了列出我想要的所有提交的方法,但我不确定将它们复制到新分支的最佳方法。要列出我想要的提交,我可以运行:

develop

如何将上面输出的提交列表(范围)复制到新分支上?我认为樱桃挑选或反射是解决方案,但在尝试了几种方法后,我无法找到正确的选择。谢谢!

2 个答案:

答案 0 :(得分:0)

在PowerShell中

 git log feature/branch ^develop ^master --no-merges --format="%H"
   | ForEach-Object { git cherry-pick $_ }

然而,循环将在第一次冲突中有效地停止工作。

答案 1 :(得分:0)

我建议使用plumbing-level命令。对于Unix shell:

set -e -u
git rev-list feature/branch ^develop ^master --no-merges \
    | while read rev; do git cherry-pick "$rev"; done