Sublime Text 可作为 Git rebase 交互式编辑器,需配置 subl --wait(macOS/Linux)或 subl -w(Windows)确保阻塞式启动;rebase 时 Git 打开 todo 文件,支持 pick、reword、edit、squash、drop 等操作,拖动行可重排,保存即生效,出错可用 git rebase --abort 恢复。

用 Sublime Text 编写 Git rebase 交互式命令,本质是让 Git 调用 Sublime 作为 core.editor,从而在清晰、可编辑的界面中安全地重排、压缩、拆分或修改提交。关键不在“复杂”,而在“可控”——你看到的就是将被执行的操作,改完保存即生效。
配置 Sublime 为 Git 默认编辑器
Git 需要知道用什么程序打开 rebase todo 列表。Sublime 默认不支持命令行阻塞式启动(即 Git 等它关掉才继续),所以必须用 subl --wait:
-
macOS:运行
git config --global core.editor "subl --wait" - Windows:确保已安装 Sublime 的命令行工具,再执行
git config --global core.editor "'C:\Program Files\Sublime Text\subl.exe' -w"(路径按实际调整) - Linux:类似 macOS,确认
subl命令可用,再配--wait
验证是否生效:运行 git config core.editor,应输出含 --wait 或 -w 的完整命令。
触发交互式 rebase 并理解 todo 列表结构
比如想整理最近 5 次提交:git rebase -i HEAD~5。Git 会自动用 Sublime 打开一个临时文件,内容类似:
pick abc1234 Add user login logic
pick def5678 Fix auth token expiry
pick ghi9012 Refactor session handler
pick jkl3456 Update README.md
pick mno7890 Add unit tests
每行开头是动作指令,后跟提交哈希和简短描述。常用动作有:
- pick:保留该提交(默认)
- reword:保留提交内容,但修改提交信息
-
edit:暂停 rebase,让你修改这个提交(如
git add后git commit --amend,再git rebase --continue) -
squash 或 fixup:合并到前一个
pick提交(squash会合并提交信息,fixup直接丢弃当前提交信息) - drop:彻底删除该提交(慎用)
在 Sublime 中安全操作的实用技巧
Sublime 没有 Git 内置校验,但你可以借它提升效率与安全性:
- 启用 行号 和 高亮括号(View → Show Console → 输入
sublime.log_commands(True)可调试,非必需) - 把要 squash 的提交紧挨着目标
pick行下方,并改成squash—— 顺序很重要,Git 只向上合并 - 想重排提交?直接拖动整行(Sublime 支持鼠标拖拽行),但注意:不能把
edit或squash行拖到最顶,也不能跨分支边界(如从 feature 分支拖进 main 的历史) - 保存前扫一眼哈希是否拼错;关闭文件前别忘了 Ctrl+S / Cmd+S —— 不保存 = Git 当你取消操作
常见卡点与应对
rebase 过程中出问题很常见,但多数能快速恢复:
-
冲突中断:Sublime 不参与解决冲突。Git 暂停后,先在终端
git status查看冲突文件 → 用 Sublime 手动编辑解决 →git add .→git rebase --continue -
误删/改错 todo 文件:直接关掉 Sublime,Git 会报错并中止;重新运行
git rebase -i ...即可重来 -
想中途放弃:终端执行
git rebase --abort,所有改动回滚,就像没开始过 -
Sublime 打不开或无响应:检查是否启用了
--wait;也可临时切回 Vim:GIT_EDITOR=vim git rebase -i ...
基本上就这些。Sublime 让 rebase 从黑盒命令变成一张可读、可拖、可删的“提交地图”。不复杂,但容易忽略 --wait 和保存动作 —— 这两点踩中一个,整个流程就卡住。










