Git如何将最近N个commit合并为单个commit?5-6个提交场景最优方案是什么
Git 合并5-6次commit为单个的最优操作方案
操作前可先执行 git log --oneline 查看提交历史,确认要合并的commit范围,避免误操作。
场景1:待合并commit均未推送至远程仓库
优先用交互式变基方案,操作可控:
- 执行变基命令,比如要合并最近5次commit,就运行:
git rebase -i HEAD~5 - 弹出的编辑器中,每一行对应一条commit,将除了第一条commit之外的其他行开头的
pick修改为s(squash的缩写,代表将当前commit合并到上一条commit) - 保存退出编辑器后,会弹出新的编辑页,填写合并后的commit说明,保存后即完成本地合并。
场景2:待合并commit已经推送至远程仓库
注意:该操作会覆盖远程分支的提交历史,仅在分支为你个人专属、或所有协作者均知晓并同意重置历史的情况下操作。
- 先按照场景1的步骤完成本地commit合并
- 执行强制推送命令更新远程分支:
git push origin 你的分支名称 --force
新手友好的简化方案(软重置)
如果不想接触变基操作,可以用软重置的方式,效果完全一致:
- 执行软重置命令,将最近5次commit的改动全部退回到暂存区,不会修改当前的代码内容:
git reset --soft HEAD~5 - 直接提交新的commit即可:
git commit -m "合并后的commit说明" - 若已推送远程,同样执行上文的强制推送命令即可。
内容的提问来源于stack exchange,提问作者Muhammad Mujtaba Shafique
相关产品推荐
相关产品推荐

