Git 多提交合并为一个完整教程(git rebase -i)干净提交必备!
Git 多提交合并为一个完整教程git rebase -i干净提交必备一、使用场景你一定遇到过在自己的功能分支开发时会产生大量零散提交add【xxx新功能开发】首次提交1add【xxx新功能开发】第二次提交2add【xxx新功能开发】第三次提交3 update ⛓️【xxx新功能联调】第四次提交4提交历史杂乱不利于 Code Review。合并目标add 【xxx新功能开发】全功能开发二、核心前提必须遵守只能合并自己的私有分支feature/* 等个人分支绝对不能操作公共分支daily/dev/master已经合并到公共分支的提交禁止变基若已推送到远程合并后必须强制推送-f且只能推自己分支三、合并步骤最安全标准流程第一步查看提交历史确认要合并哪些gitlog找到你要合并的连续提交并找到合并起点。第二步执行交互式变基方式 1合并最近 N 条最常用gitrebase-iHEAD~44代表合并最近 4 条。方式 2从指定 commit 开始合并更精准gitrebase-icommitIDgit rebase -i 后面填的 commitID 你要保留的、最前面的那一个的「上一个」第三步进入编辑界面关键你会看到命令含义pick保留提交reword修改提交信息squash合并到上一个提交你要用这个drop删除提交正确修改pickadd【xxx新功能开发】首次提交1 squashadd【xxx新功能开发】第二次提交2 squashadd【xxx新功能开发】第三次提交3 squash update ⛓️ 【xxx新功能联调】第四次提交4第四步保存并退出VimESC→:wqVSCode直接关闭标签页 → 保存第五步编辑最终提交信息把所有旧信息删除写一条干净规范的提交add【xxx新功能开发】全功能开发保存退出。第六步合并完成gitlog多条提交 →变成一条。第七步推送到远程必须强制推送若已推送到远程合并后必须强制推送-f且只能推自己分支gitpush origin 你的分支名-f⚠只能推自己分支四、每一步注意事项超级重要1. 执行 rebase 前确保代码全部提交没有未暂存文件确保当前在自己的功能分支不在 daily/master最好先备份分支git branch 分支名_bak2. 编辑 rebase 界面时第一个必须是 pick后面全部改成squash不要打乱提交顺序不要修改不属于你的提交3. 保存后如果出现冲突解决冲突git add .git rebase --continue如果想撤销git rebase --abort100% 安全4. 合并提交信息时不要保留无用信息不要写无意义文案格式统一【模块】功能描述5. 强制推送前确认是自己分支不要推daily/dev/master推送前最好让同事不要使用该分支五、异常处理小白必看1. 合并失败想回到原来状态gitrebase--abort2. 有冲突解决完继续gitadd.gitrebase--continue3. 彻底回退到变基之前gitreset--hardORIG_HEAD六、最常用命令总结直接收藏# 查看提交gitlog# 合并最近4条提交gitrebase-iHEAD~4# 取消变基gitrebase--abort# 解决冲突后继续gitrebase--continue# 强制推送仅自己分支gitpush origin feature_xxx-f七、最终总结最核心多个提交合并 git rebase -i squash只能在自己分支操作公共分支绝对禁止变基变基前必须提交代码 确认分支合并后必须强制推送自己分支有冲突就解决想取消就 --abort