如何将dev分支的多个提交压缩合并到public分支且保留dev原有提交?
可行性结论
该需求完全可以实现,整个操作不会改动dev分支的任何现有提交记录,只会在public分支生成一条全新的独立压缩提交。
具体操作步骤
- 第一步:切换到
public分支并同步远程最新内容,避免合并冲突
git checkout public git pull origin public
- 第二步:执行压缩合并操作,提取
dev分支的所有变更汇总到当前分支暂存区git merge --squash dev
如果执行过程中提示代码冲突,解决所有冲突文件后执行git add 冲突文件名标记冲突已处理即可。 - 第三步:生成单条合并提交,可自定义提交信息说明合并内容
git commit -m "合并dev分支最新功能,对应提交范围:c964dea~9be7fdb" - 第四步:将本地
public分支的新提交推送到远程仓库git push origin public
实现原理解释
git merge --squash的逻辑是仅对比目标分支和当前分支的差异,将所有差异变更汇总到当前分支的暂存区,不会继承目标分支的提交历史,也不会对目标分支本身做任何修改,因此dev分支上原有的4条提交记录会被完整保留,不受任何操作影响。
内容的提问来源于stack exchange,提问作者WoJ
相关产品推荐
相关产品推荐

