.gitignore对非代码文件特别重要,因其永久阻止Git追踪日志、缓存、编译产物等自动生成且频繁变化的文件;漏配会导致node_modules/、__pycache__/等污染提交历史、拖慢克隆、引发冲突。

Gitignore 为什么对非代码文件特别重要
因为 .gitignore 不是“忽略一次”,而是让 Git 永远不追踪匹配的文件——这对日志、缓存、编译产物这类自动生成又频繁变化的非代码文件最关键。一旦漏配,git add . 很容易把 node_modules/、__pycache__/、build/ 甚至临时的 *.log 全塞进暂存区,后续提交会污染历史、拖慢克隆速度、引发协作冲突。
常见非代码文件类型及对应 ignore 规则
规则写在项目根目录的 .gitignore 文件里,按行生效。注意路径匹配逻辑:以 / 开头表示从项目根开始;无前导 / 表示全局匹配;末尾加 / 表示只匹配目录。
-
node_modules/—— Node.js 依赖(必须加/,否则会误删同名文件) -
__pycache__/和*.pyc—— Python 编译缓存 -
dist/、build/、out/—— 前端或 Rust/Go 的构建输出目录 -
*.log、logs/—— 日志文件,避免敏感信息泄露和体积膨胀 -
.env、.env.local—— 环境变量文件(切勿提交密钥) -
*~、.*.swp—— Vim/Emacs 临时备份文件
已提交过的非代码文件怎么彻底清除
如果文件已被 Git 跟踪,改 .gitignore 不起作用——Git 只忽略“未跟踪”的文件。必须手动取消跟踪并保留本地文件:
git rm -r --cached node_modules/ git rm --cached .env git commit -m "stop tracking generated files"
注意:git rm --cached 不会删除你磁盘上的文件,只从 Git 索引中移除。若执行后仍看到文件在 git status 中显示为 “deleted”,说明它已被删了,需用 git checkout -- <file></file> 恢复。
如何验证 ignore 规则是否生效
别靠猜,用 Git 自带命令确认:
-
git check-ignore -v path/to/file—— 显示哪个.gitignore规则命中了该文件 -
git status --ignored—— 查看当前被忽略但存在的文件列表(方便核对是否漏加) - 对新生成的文件(如运行
yarn build后的dist/),直接执行git add dist/,应提示The following paths are ignored...
最容易被忽略的是多级嵌套下的 ignore 范围,比如 src/utils/__pycache__/ 是否被 __pycache__/ 匹配——答案是**不匹配**,因为没加 **/ 前缀;要全局生效得写成 **/__pycache__/ 或 __pycache__/(Git 默认递归匹配子目录,但推荐显式写 **/ 避免歧义)。


















