Git中保留master分支历史提交,用beta-release分支完整覆盖master分支的方法
保留Master分支历史,用Beta-Release完全覆盖内容的解决方案
没问题,我来帮你搞定这个需求——既要保住master分支里所有重要的旧提交,又要用beta-release分支的完整新版本覆盖master的当前内容,这其实用Git的合并策略就能轻松实现,具体步骤如下:
先确保本地仓库同步了远程的最新代码,避免后续操作出现意外冲突:
git fetch origin切换到master分支:
git checkout master执行特殊的合并操作,强制用beta-release的内容覆盖master:
git merge --allow-unrelated-histories -X theirs beta-release给你拆解一下这个命令的作用:
--allow-unrelated-histories:因为beta-release是重置后只剩单个提交,和master的历史已经完全脱节了,必须加这个参数才能让Git允许合并这两个无关联的分支历史。-X theirs:这是合并策略的关键选项,告诉Git不管有没有冲突,都优先采用beta-release分支的内容。由于beta-release是完整的新版本,执行完这个命令后,master的内容会和beta-release完全一致,同时之前所有的旧提交都会被保留下来。
如果你用的Git版本低于2.3(这个版本才支持
-X theirs),别慌,还有备选方案:- 直接把beta-release的所有内容复制到当前master分支:
git checkout beta-release -- . - 把这些变更加入暂存区并提交:
git add .git commit -m "同步beta-release完整版本,覆盖当前master内容"
- 直接把beta-release的所有内容复制到当前master分支:
完成以上操作后,master分支会保留所有旧的历史提交,而最新的提交会让master的代码状态和beta-release完全一致,完美符合你的要求。
最后如果需要把这个变更推送到远程仓库,执行:git push origin master
内容的提问来源于stack exchange,提问作者Waqas Tahir
相关产品推荐
相关产品推荐

