Git Squash在 IDEA 中精准多选并 Squash
实战笔记用 IntelliJ IDEA 把 9 个零散提交优雅地“压缩”成一个场景复现本地调试时疯狂提交了 9 次setupqryraspstaticfileGit 历史惨不忍睹。在不借助命令行黑屏的情况下如何用 IDEA 自带的 Git 面板安全地完成Squash压缩合并一、 我遇到了什么“脏”历史打开 Version Control 面板Alt9我发现dev2.0分支上出现了极度“刷屏”的景象同一个人zhangsan在两天内连续提交了将近 10 次。提交信息全是复制粘贴setupqryraspstaticfile毫无辨识度。中间还夹杂了合并提交Merge remote-tracking branch导致分支图谱拐来拐去非常难看。如果直接 Push 到远程不仅显得不专业以后回滚代码时更是灾难。此时Squash就派上了用场。二、 核心操作在 IDEA 中精准多选并 Squash针对截图中的场景我需要仅针对那 9 个重复的setupqryraspstaticfile提交动手绝不能动到同事JianHua的功能提交和合并节点。Step 1精准多选在日志列表中找到这 9 个提交。关键技巧不要只点一个按住键盘上的Ctrl键Mac 为Cmd用鼠标左键依次点击这 9 个目标提交确保它们全部高亮。Step 2右键点击“Squash Commits…”在高亮的任意一个提交上右键点击菜单中的Squash Commits...也就是你截图里高亮的那一项。Step 3重写提交信息IDEA 会弹出一个信息编辑框。别犹豫把那一堆重复的旧信息全部删掉换上一句干净利落的话例如chore: 完成 qry rasp 静态文件 setup 基础配置点击OK本地 9 个提交瞬间变成 1 个。三、 为什么不建议在命令行里硬敲当然命令行党也可以用git rebase -i HEAD~12然后手动改pick为squash。但在 IDEA 里操作有两个肉眼可见的好处可视化多选界面更直观避免数错HEAD~N的个数。避免误伤在 GUI 里可以清楚地避开Merge合并提交防止把别人的代码改写成你的历史。四、 关键一步Push 时的“生死时速”这里有一个极容易踩的巨坑。因为你操作的这 9 个提交之前已经 Push 到远程origin/dev2.0了。本地压缩后远程历史跟本地不一致普通git push会被直接拒绝。正确做法gitpush --force-with-lease