git: cherry-pick 兄弟提交列表

git: cherry-pick a list of sibling commits

由于我雇主的工作流程,我的情况是我有一个父提交和多个子提交,每个子提交都是不同分支的尖端:

      ┌─── b <- branch1
      ├─── c <- branch2
      ├─── d <- branch3
... ─ a ── e <- branch4

我想以以下状态结束:

      ┌─── b <- branch1
      ├─── c <- branch2
      ├─── d <- branch3
... ─ a ── e <- branch4
      └─── b'─ c'─ d'─ e' <- branch5

准备好的提交是克隆。这些提交的顺序并不重要,如有必要,我可以在应用时手动解决每个提交。

有没有一种方法可以自动执行此操作,而无需创建新分支并一次手动挑选每个提交?

列出包含父提交的分支(以查找子提交):

git branch --contains $a | cut -c2-

cut 从当前分支中删除星号)。

然后创建一个新分支并挑选子提交:

child_commits=`git branch --contains $a | cut -c2-`
git checkout -b branch5
git cherry-pick $child_commits