Git合并Feature分支至Master分支,仅保留单个提交的方法
如何将Feature分支的所有修改合并为单个提交到Master分支
我来帮你搞定这个问题!你想要的是把Feature分支的所有修改打包成单个提交合并到Master,同时不保留Feature分支的历史记录和多个小提交对吧?这时候用Git的squash合并就完美匹配你的需求,具体操作步骤如下:
- 首先切换到Master分支,并拉取远程最新的代码,确保本地分支是最新状态:
git checkout master git pull origin master - 执行squash合并命令,把Feature分支的所有提交压缩成一个暂存的修改集(把
feature-branch替换成你实际的Feature分支名称):git merge --squash feature-branch - 这时候Git会把Feature分支的所有修改都暂存起来,但不会自动提交。你需要手动执行提交命令,然后写一个能概括所有修改的提交信息(比如“完成用户管理模块开发:新增注册、登录权限控制”):
(执行这个命令后会打开默认的编辑器,你可以编辑提交信息,保存退出就完成提交了)git commit - 最后把合并后的Master分支推送到远程仓库:
git push origin master
为什么这个方法符合你的需求?
- 普通合并(默认的
--no-ff模式)会保留Feature分支的完整历史和分支结构,所以Master上会显示所有提交和分支记录; - 变基是把Feature的所有提交“移动”到Master的最新提交之后,虽然没有分支记录,但还是会保留多个小提交;
- 而
squash合并会把Feature分支的所有提交压缩成一个全新的提交,Master分支的历史上只会看到这一个合并提交,同时所有修改都被整合进去了。
一些注意事项
- 确保在合并前本地Master分支是最新的,避免合并时出现冲突;
- 如果你的Feature分支是多人协作开发的,squash合并后,本地Feature分支的历史和Master的新提交没有关联,后续如果还要基于这个Feature开发,建议重新从Master拉取新的分支,避免历史混乱;
- 如果你已经把Feature分支推送到远程仓库,不要强制推送修改后的Feature分支(除非团队所有成员都清楚并同意),否则会打乱其他人的工作进度。
内容的提问来源于stack exchange,提问作者Monir
相关产品推荐
相关产品推荐

