平时忽略文件基本都写 .gitignore,其实 Git 还有另外两层:仓库本地的 .git/info/exclude,以及机器级的全局 ignore。参考:.gitignore Isn’t the Only Way To Ignore Files in Git
三层忽略
| 文件 | 范围 | 是否进仓库 | 典型用途 |
|---|---|---|---|
.gitignore | 当前仓库,可随目录嵌套 | 会提交 | 团队共享的忽略规则 |
.git/info/exclude | 仅当前仓库 | 不提交 | 个人笔记、本地临时文件 |
~/.config/git/ignore | 本机所有仓库 | 不提交 | .DS_Store、编辑器备份等 |
.gitignore
最常用。写进仓库,大家一起生效。适合 node_modules/、dist/、.env 这类项目级规则。
.git/info/exclude
每个仓库的 .git 里都有,改了不会被提交。适合「只有我本地有、又不想污染团队 .gitignore」的东西,比如个人 notes.txt。
全局 ignore
默认路径是 ~/.config/git/ignore。本机所有仓库都会吃这套规则,很适合放 macOS 的 .DS_Store。
也可以换成自定义文件:
git config --global core.excludesFile ~/.gitignore_global
恢复默认:
git config --global --unset core.excludesFile
查某个文件被谁忽略了
git check-ignore -v .DS_Store
输出会指出是哪一层、哪一行在忽略它,例如:
.gitignore:1:.DS_Store .DS_Store
.git/info/exclude:7:.DS_Store .DS_Store
/Users/you/.config/git/ignore:2:.DS_Store .DS_Store
没有输出,说明当前没有规则在忽略这个文件。
怎么选
- 团队都要忽略 →
.gitignore - 只有自己本地要忽略 →
.git/info/exclude - 所有仓库都要忽略(系统垃圾文件)→ 全局 ignore