Git Squash在 IDEA 中精准多选并 Squash
实战笔记:用 IntelliJ IDEA 把 9 个零散提交优雅地“压缩”成一个
场景复现:本地调试时疯狂提交了 9 次
setupqryraspstaticfile,Git 历史惨不忍睹。在不借助命令行黑屏的情况下,如何用 IDEA 自带的 Git 面板安全地完成Squash(压缩合并)?
一、 我遇到了什么“脏”历史?
打开 Version Control 面板(Alt+9),我发现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