如何将development分支的成功提交迁移至staging分支?
将指定分支的成功提交完整同步到目标分支的方案
你遇到的问题是因为cherry-pick仅会应用单个提交的变更,而那个构建成功的提交本身可能没有包含package.json,或者该文件的依赖状态来自更早的提交,单独摘取这个提交无法还原完整的可运行代码环境。以下是几种更可靠的解决方法:
方法一:直接将staging分支重置到目标提交(适用于staging分支可覆盖的场景)
如果staging分支没有未合并的本地或远程修改,可直接重置到development分支上那个构建成功的提交:
- 拉取远程最新分支确保本地状态同步:
git fetch origin - 切换到staging分支:
git checkout staging - 重置分支到指定的成功提交哈希:
git reset --hard <你的成功提交哈希值> - 强制推送到远程staging分支(注意:如果有其他开发者在staging分支工作,需提前沟通确认):
git push origin staging --force
方法二:基于成功提交创建新分支替换staging
如果不想直接重置现有staging分支,可创建一个基于目标提交的新分支,替换远程staging:
- 从development的成功提交创建新分支:
git checkout -b staging-temp <你的成功提交哈希值> - 删除远程旧staging分支:
git push origin :staging - 将新分支推送到远程作为staging:
git push origin staging-temp:staging - 本地切换到新的staging分支并删除临时分支:
git checkout staging git branch -d staging-temp
方法三:合并目标提交的完整状态到staging(适用于staging有需要保留的修改)
如果staging分支有需要保留的提交,可先将development的成功提交合并进来,解决冲突后再推送:
- 切换到staging分支:
git checkout staging - 合并指定的成功提交到当前分支:
git merge <你的成功提交哈希值> - 若出现冲突,手动解决后提交:
git add . git commit -m "Merge successful commit from development" - 推送到远程:
git push origin staging
内容的提问来源于stack exchange,提问作者Amauri Santos
相关产品推荐
相关产品推荐

