如何将Git的qa分支内容完整覆盖到staging分支且保留staging提交记录?
方案适配性结论
你检索到的操作方案完全适配你的场景,且恰好可以满足你不丢失staging分支历史提交记录的需求。
方案原理说明
这是Git中「用一个分支全量覆盖另一个分支,同时保留被覆盖分支历史」的标准实现逻辑,每一步的作用如下:
git checkout qa:切换到待迁移内容的源分支qagit merge -s ours staging:使用ours合并策略执行合并,这个策略会完全保留当前qa分支的所有代码内容,仅把staging分支的所有提交历史并入qa的提交链路中,全程不会产生任何代码变更,也不会出现冲突git checkout staging:切换到目标分支staginggit merge qa:此时qa已经包含了staging的全部历史,合并会默认走快进(fast-forward)模式,直接将staging的分支指针移动到qa的最新提交位置即可。最终staging的代码会和qa完全一致,且所有原有历史提交都会完整保留在提交记录中,不会丢失。
操作建议
为了避免操作失误,可提前执行以下操作做兜底备份:
git tag -a staging_before_migrate -m "迁移qa内容前的staging备份"
如果你们的staging分支是受保护的不允许直接推送合并结果,可以在执行完git merge -s ours staging并将改动推送到远程qa分支后,提交从qa到staging的PR,走团队审批流程合并即可。
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

