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
由于我雇主的工作流程,我的情况是我有一个父提交和多个子提交,每个子提交都是不同分支的尖端:
┌─── 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