如何将develop分支合并PR的提交cherry-pick到deployment分支
已合并PR特定提交迁移到新分支操作方案
问题原因
你之前操作带出多余提交,是因为直接cherry-pick PR合并提交时,会读取合并提交两个父分支的全量差异,如果tester-branch和develop的分叉点早于该PR源分支的分叉点,就会带入区间内的其他无关改动。
方案1:仅迁移合并提交的全量改动(单提交)
适合你要直接取包含B、C所有改动的父提交A的需求:
- 切换到目标分支并拉取最新内容
git checkout tester-branch git pull origin tester-branch
- 带
-n参数cherry-pick合并提交,仅将改动落到工作区,不自动提交也不携带历史提交
git cherry-pick -n -m 1 <commit-A的完整哈希值>
- 检查工作区改动确认仅包含A、B、C的内容后,提交推送
git add . git commit -m "自定义提交信息" git push origin tester-branch
方案2:合并A、B、C三个提交为单个提交迁移
如果你能获取到A、B、C三个独立提交的哈希值(假设A是最早的提交,C是最晚的提交),可以用区间cherry-pick实现:
- 切换到目标分支并拉取最新内容
git checkout tester-branch git pull origin tester-branch
- 拉取三个提交的全量改动到工作区
git cherry-pick -n <commit-A的哈希>^..<commit-C的哈希>
注意
commit-A后面加^是为了将提交A本身包含在cherry-pick区间内
- 确认改动无误后提交推送
git add . git commit -m "合并PR对应A、B、C提交改动" git push origin tester-branch
注意事项
- 操作前先执行
git status确认工作区没有未提交的改动,避免冲突内容混淆 - 如果操作过程中出现冲突,解决完冲突后执行
git add <冲突文件>,再继续提交即可
内容的提问来源于stack exchange,提问作者Lutaaya Huzaifah Idris
相关产品推荐
相关产品推荐

