navicat连接参数不存于仓库目录,故.gitignore对其无效;实际提交的仅是手动导出并保存至仓库的sql文件,如schema/users_table.sql等,而连接配置存储在系统用户目录(如windows的appdata)中,git根本无法访问。

Navicat 本身不读取、不解析、也不提交任何数据库连接参数到 Git——它根本不会把连接配置(比如主机、端口、用户名)当成文件内容写入仓库。所谓“忽略特定连接参数”,其实是你误解了 Git 的作用边界。
.gitignore 为什么对 Navicat 的连接配置“无效”?
Navicat 的连接信息(如 host、port、user)不以明文文件形式存在项目目录中,而是保存在本地用户配置里:
- Windows:
C:\Users\<user>\AppData\Roaming\PremiumSoft\Navicat\</user> - macOS:
~/Library/Application Support/PremiumSoft/Navicat/ - Linux:
~/.navicat/
这些路径不在你的 SQL 仓库目录内,Git 根本看不到它们,自然谈不上“忽略”或“提交”。
-
.gitignore只影响当前仓库根目录及子目录下的文件 - Navicat 连接配置不是项目源码的一部分,也不是导出的 SQL 文件
- 即使你在
.gitignore里写*.ncx或connections/,也毫无意义——因为那些文件压根不会出现在你 git 管理的路径里
哪些文件实际会被 Git 提交?哪些容易误提?
真正进入 Git 仓库的,只有你手动导出并保存到仓库目录里的 SQL 文件,例如:
schema/users_table.sqlprocedures/calculate_balance.sqlmigrations/20260901_add_index_to_orders.sql
但以下几类常被误提,且 .gitignore 容易失效:
-
config/<em>.json</em>或env/.env:如果手抖存进了仓库,而.gitignore没配或规则写错(比如漏了/导致匹配失败),就会提交敏感配置 -
<em>.log</em>、.tmp:Navicat 导出时若勾选了「生成日志」,可能产出临时文件,需确保.gitignore包含对应规则 -
__MACOSX/或.DS_Store:macOS 压缩或浏览时自动生成,建议全局加进.gitignore
为什么改了 .gitignore 还是提交了不该提的文件?
最常见原因就一个:git rm --cached 没执行。
- 如果某个文件(比如
secrets.json)之前已经git add并 commit 过,那它就是“已追踪状态” - 此时往
.gitignore里加规则完全没用,Git 继续监控它 - 必须先运行:
git rm --cached secrets.json,再 commit,才能真正停止追踪
其他坑点:
-
.gitignore文件本身编码为 UTF-8 with BOM,某些 Git 版本会解析失败 - 规则写成
config/*.env,但文件实际在./env/local.env,路径不匹配就无效 - 使用了
**/node_modules,但忘了加末尾/,导致匹配到文件名含node_modules的普通文件
Navicat 和 Git 的交集仅限于你“导出 → 保存到仓库路径 → 手动提交”这一条脆弱的手动流水线。连接参数从来就不在这条链路上,也不该出现。最容易被忽略的,其实是团队没人确认每次导出的 SQL 是否真的覆盖了最新变更——而不是纠结为什么 Git 没忽略掉根本不存在的配置文件。











