是否需编写Shell脚本批量Cherry-Pick分支提交?有无现成Git命令?
批量Cherry-Pick指定范围提交的Git命令
不用写Shell脚本,Git本身就支持批量处理这类需求,直接用范围格式的git cherry-pick命令就能完成:
# 直接执行这条命令即可 git cherry-pick $(git merge-base origin/HEAD origin/feature-branch)..origin/feature-branch
命令解释
git merge-base origin/HEAD origin/feature-branch:就是你用来获取两个分支共同祖先提交(即你说的“首个提交的前置提交”)的命令。..是Git的范围表示法,<start>..<end>会选中所有在<end>分支里、但不在<start>提交里的提交——也就是从共同祖先的下一个提交开始,一直到origin/feature-branch的最新提交,正好对应你需要逐个cherry-pick的所有提交。- 这个命令会按照提交时间从早到晚的顺序,自动逐个执行cherry-pick,和你手动从
origin/feature-branch~9到origin/feature-branch~0的操作效果完全一致。
冲突处理
如果中途遇到代码冲突,Git会自动暂停操作,此时你可以:
- 手动解决代码冲突
- 执行
git add <冲突文件> - 执行
git cherry-pick --continue继续后续的cherry-pick操作
如果想跳过当前冲突的提交,执行 git cherry-pick --skip;如果要放弃整个批量操作,执行 git cherry-pick --abort。
内容的提问来源于stack exchange,提问作者user2394284
相关产品推荐
相关产品推荐

