git check-ignore -v:查文件为什么没进提交

13 次浏览2 条回复

有时 git status 里看不到新文件,不一定是 Git 出问题,可能被某条 ignore 规则匹配了。可以在仓库根目录直接查来源:

环境:Git 2.25+。

git check-ignore -v -- path/to/file

输出会带上生效的 .gitignore 文件、行号和规则,定位起来比逐层翻配置快。想检查一批文件也可以一次传多个路径:

git check-ignore -v -- config.local logs/app.log

如果只是临时确认某个文件,别急着用 git add -f,先看清楚它为什么被忽略;日志、密钥这类本来就不该进仓库。

这个命令还有个小区别:默认主要看未被跟踪的文件,已经被 Git 跟踪的文件即使后来命中 ignore,也不会因此从 git status 里消失。要查这类情况,还是得看 git ls-files -v -- path/to/file 或直接检查历史和当前 diff。

另外批量排查时可以加 -n,只输出命中的路径,适合先筛一遍:

git check-ignore -n -- config.local logs/app.log

确认规则后再决定改 .gitignore,比直接强制添加稳妥。

补充一个容易漏掉的参数:如果文件已经被跟踪,但想专门测试它会被哪条 ignore 规则命中,可以加 --no-index:

git check-ignore -v --no-index -- path/to/file

这样会按未跟踪文件的方式检查,不用先改索引。确认规则后,再决定是调整 .gitignore,还是保留现有文件的跟踪状态。