Navicat的Git面板点不动或报“not a git repository”并非软件故障,而是因git路径配置错误、目标目录无.git仓库、或未配置origin远程分支所致。
navicat 本身不自动同步数据库变更到 git,所有 sql 文件必须手动导出、存入仓库路径、再手动提交——跳过任一环节,git 就会和真实数据库脱节。
Navicat 的 Git 面板为什么点不动或报 “not a git repository”
这不是 Navicat 故障,而是它根本没找到有效的 Git 上下文。常见原因只有三个:
-
git可执行文件路径填错:Windows 必须填C:\Program Files\Git\bin\git.exe,macOS 填/opt/homebrew/bin/git或/usr/bin/git(不能只写git) - 当前 SQL 文件所在目录下没有
.git目录:Navicat 不会帮你运行git init,必须提前在终端里进到目标文件夹执行 - 仓库没配
origin远程:Navicat 默认只认origin,需手动执行git remote add origin https://...,再用git branch --set-upstream-to=origin/main main绑定分支
跨平台共享 SQL 仓库时,哪些配置必须统一
Windows/macOS/Linux 对换行符、大小写、权限的默认处理不同,直接导致脚本执行失败或 Git 冲突。关键动作只有三件:
- 所有平台仓库根目录下必须存在
.gitattributes,内容至少含:*.sql text eol=lf whitespace=strip - Windows 用户必须全局关闭自动换行转换:
git config --global core.autocrlf false(否则每次git add都悄悄把 LF 换成 CRLF) - 禁用 Navicat 导出时的「自动添加时间戳注释」——否则每次导出,文件头都变,Git 认为整文件被重写
存储过程导出后执行报错,常见原因是什么
MySQL 存储过程默认导出不含 DELIMITER,但分号语句必须靠它隔离。这不是平台差异问题,而是 Navicat 的导出逻辑本身就不适配可执行脚本。
- 改用 Navicat Premium 的「导出为可执行脚本」选项(仅 Premium 支持)
- 更稳妥的做法是不在 Navicat 里直接执行这些文件,而交给
mysql -e或 CI 流水线里的source命令,并确保它们预处理过DELIMITER - Oracle 存储过程若含中文注释,需确认客户端字符集设为
AL32UTF8,否则导出乱码,Git diff 失效
最常被忽略的不是设置路径,也不是选分支,而是没人负责定期导出并提交——Navicat 从不监听数据库变更,你改了表结构、存过、视图,它不会自动同步到 Git。


















