Git 中文手册

.gitignore 忽略文件写法大全:不再误提交 node_modules、日志等

2026-09-06 约 3 分钟阅读

总是不小心把 node_modules、.env、编译产物提交上去?.gitignore 告诉你如何忽略这些文件。本文讲清语法规则与常见模板,并解决"已提交又改不生效"的坑。

场景:git status 永远冒出一堆 node_modules/__pycache__/.env,看着烦还可能误提交。.gitignore 就是告诉 Git"这些文件/目录不要跟踪"的清单。

基本用法

在仓库根目录创建 .gitignore 文件,把要忽略的写进去:

# 依赖目录
node_modules/

# 编译产物
dist/
build/
*.class

# 环境变量(含密钥,绝不提交)
.env
.env.local

# 日志
*.log

# 系统文件
.DS_Store
Thumbs.db

写好后,这些内容就不会出现在 git status 里,也无法被 add。

语法规则速查

写法含义示例
node_modules/忽略该目录整个依赖目录
*.log通配,忽略所有 .log忽略日志
!important.log反向排除,强制跟踪例外保留
/build/仅根目录下的防止误伤子目录
doc/*.txt相对目录模式只忽略 doc 下
**/temp任意层级匹配嵌套目录

关键规则:末尾斜杠

  • dir 会匹配同名文件和目录
  • dir/ 只匹配目录(推荐写带斜杠)

常见项目模板片段

Node/前端

node_modules/
dist/
*.log
.env

Python

__pycache__/
*.py[cod]
.venv/

Java

target/
*.class
.idea/

大坑:已经提交过,ignore 不生效

.gitignore 只对未跟踪文件有效。若文件已被 add/commit,先取消跟踪:

# 从版本库取消跟踪但保留本地文件
git rm --cached node_modules/ -r
git commit -m "停止跟踪 node_modules"

之后 ignore 规则才生效。

确认规则生效

git check-ignore -v node_modules/某个文件
# 会输出命中哪条 ignore 规则
git status
# 被忽略的不再显示

常见问题

  • 想忽略但保留 .gitkeep:写 dir/ + !dir/.gitkeep
  • .env 必须忽略:里面常含密钥,误提交是安全事件。
  • 全局忽略git config --global core.excludesfile 指定一个全局忽略文件,可忽略个人工具的临时文件。

一句话速记

.gitignore 写忽略规则,对未跟踪文件生效;已提交过的要先 git rm --cached 再忽略。

?

常见问题 FAQ

我加了 .gitignore 但文件还是被跟踪/提交了,为什么?
.gitignore 只对"尚未被跟踪"的文件生效。如果文件之前已 git add/commit 过,需先 git rm --cached 文件名 取消跟踪,再让 ignore 规则生效。
怎么忽略 node_modules 这样的整个目录?
在 .gitignore 写 node_modules/ (带斜杠)。也可配合其他模式忽略多个目录。
想保留 .env.example 但忽略 .env 怎么配?
写 .env 会忽略所有叫 .env 的文件,但想保留的 .env.example 不会被误伤(因为名字不同)。若想强制不忽略某文件,用 !.env.example 反向排除。
.gitignore 对已提交到远程的文件有效吗?
无效。已经推到远程的文件不会被自动删除,需 git rm --cached 后在远程删除跟踪,再提交生效。ignore 只影响未来新增文件的跟踪。