gitsavvy是sublime text 4中唯一持续更新、支持交互式提交和commit.template的git插件,需通过package control安装、在含.git的项目根目录打开,并配置git_command路径及core.editor才能正常使用模板和推送。

别装 Git 插件(wbond 版)——它只支持 git: commit -m "",不读 commit.template,也不弹编辑器,根本没法用模板写提交信息。
GitSavvy 是当前唯一能真正“在 Sublime 里提交”的 Git 插件
Sublime Text 4 内置 Python 3.8+,而旧版 SublimeGit(2017 年停更)依赖 Python 2 和过时的 GitPython,安装后常见 ImportError: No module named git 或命令无响应。GitSavvy 是目前唯一持续更新、完整覆盖 add/commit/push/stash/branch 等操作的插件,且默认走 Git 的交互式编辑流程,能自然加载你配置的 commit.template。
安装要点:
- 按
Ctrl+Shift+P→ 输入Package Control: Install Package→ 搜索GitSavvy(认准作者是divmain) - 装完不用重启,但必须通过
File → Open Folder…打开含.git/的项目根目录,否则所有命令灰显 - 首次运行
Git: Commit会弹出一个untitled临时 buffer,标题为Git Commit Message—— 这不是普通输入框,必须按Ctrl+Enter(不是回车)确认,否则关掉即丢弃
Git 命令路径配不对,GitSavvy 就是摆设
Mac 用户用 Homebrew 装了 Git,which git 返回 /opt/homebrew/bin/git,但双击图标启动 Sublime 时它看不到 shell 的 PATH;Windows 用户若用 Git for Windows,默认 git.exe 在 C:\Program Files\Git\bin\git.exe,但插件可能只搜 git 命令名而找不到。
解决方式统一:打开 Preferences → Package Settings → GitSavvy → Settings – User,填入绝对路径:
{"git_command": "/opt/homebrew/bin/git"}
验证是否生效:Ctrl+` 打开控制台,执行:
import subprocess; subprocess.run(["git", "--version"])
有输出即成功。没输出?说明路径错、权限不足,或 Git 本身没装好(先在终端跑通 git --version)。
想用 commit template?得靠 Git 自身机制,不是插件功能
GitSavvy 的 Git: Commit 命令底层调用的是 git commit,但它默认加了 -m "" 参数,跳过了编辑器流程,所以即使你设置了:
git config --global commit.template ~/Documents/git-commit-template
也完全不会生效。要让模板出现,必须满足两个条件:
- 删掉
-m参数,走交互式提交流程 - 让 Git 知道该用 Sublime 当编辑器:
git config --global core.editor "subl --wait"(macOS/Linux)或git config --global core.editor "C:/Program Files/Sublime Text/subl.exe --wait"(Windows)
之后你在终端手动运行 git commit,就会弹出 Sublime 窗口并预填模板内容。想在 Sublime 内一键触发这个流程?目前没有插件能绕过 Git 自身逻辑——要么接受无模板的快速提交,要么切终端敲一次 git commit。
Push 失败八成是因为没设 upstream
执行 Git: Push 后卡住或报错 fatal: The current branch main has no upstream branch,这不是插件问题,是 Git 的标准行为:本地分支首次推送必须显式关联远程分支。
正确做法:
- 用 GitSavvy 的
Git: Push → Set upstream and push(菜单里有,命令面板也能搜到) - 或者手动在终端运行:
git push -u origin main(把main换成你的分支名)
设完 upstream 后,后续 Git: Push 就能直接用了。注意:GitSavvy 不自动 pull,推送前最好自己先 Git: Pull 一下,避免被拒绝。
最常被忽略的点:GitSavvy 的状态栏显示(如 main ●2)只在项目根目录下有效;单文件打开、子目录打开、或 .git 在上层目录,它就静默失效——不是插件坏了,是它压根没加载工作区。











