能否将合并至staging的squashed commit Cherry Pick至基于master的新分支?
当然可以这么做!
这是跨分支复用已合并变更的常规操作,完全可行。下面是具体的操作步骤,帮你顺利完成这个流程:
操作步骤
- 首先同步本地仓库的最新代码,确保你拿到staging和master分支的最新状态:
git checkout staging git pull origin staging git checkout master git pull origin master - 基于最新的master分支创建一个新的工作分支,比如命名为
feature/xyz-for-master:git checkout -b feature/xyz-for-master master - 找到合并到staging的那个squashed commit的哈希值。你可以在staging分支下用日志命令查看:
你要找的是那个被压缩合并后的提交,通常它的提交信息会和你之前的PR标题相关,很容易识别。git log --oneline staging - 在新创建的分支上执行cherry-pick,把目标commit的变更应用过来:
git cherry-pick <替换成你的squashed commit哈希值>- 如果没有代码冲突,这个操作会直接完成;如果出现冲突,Git会提示你手动解决冲突。解决完冲突后,用
git add .标记冲突文件已处理,再执行git cherry-pick --continue就能完成cherry-pick。
- 如果没有代码冲突,这个操作会直接完成;如果出现冲突,Git会提示你手动解决冲突。解决完冲突后,用
- 把带有变更的新分支推送到远程仓库:
git push origin feature/xyz-for-master - 最后就可以在你的代码托管平台上,向master分支发起新的Pull Request了。
注意事项
- 因为staging和master分支可能存在代码差异,cherry-pick完成后一定要测试一下功能的完整性和兼容性,确保没有引入新的问题。
- 如果之后你在staging上还有相关的后续变更需要同步到master,同样可以用cherry-pick操作逐个迁移;如果变更较多,也可以考虑用rebase,但对于单个squashed commit来说,cherry-pick是最直接简便的方式。
内容的提问来源于stack exchange,提问作者Nidhin S G
相关产品推荐
相关产品推荐

