环境变量与安全机制
6.4 .gitignore 最佳实践
Tip
学会配置.gitignore,避免将垃圾文件和敏感信息提交到Git仓库。
1. 为什么要学这个?
你的队友从GitHub克隆了你的项目,发现下载了足足500MB。他很震惊:"就几个文件,怎么这么大?"
打开一看,里面有一个巨大的node_modules文件夹,还有一堆.log日志,甚至还有你不小心拖进去的截图。
500MB的仓库,队友每次克隆都要骂娘。
2. 核心概念
2.1 .gitignore - Git的黑名单
就像机场安检的禁止携带清单。
- 没有清单:什么都能带上飞机,包括打火机、水果刀
- 有了清单:安检会拦住这些危险品,不让它们上飞机
技术定义:.gitignore是一个文本文件,用于指定Git应该忽略哪些未跟踪的文件。被忽略的文件不会出现在
git status的未跟踪列表中,也不会被git add .包含。
2.2 哪些文件应该被忽略?
-
依赖包(
node_modules/)- 体积巨大(几百MB),且可以通过
pnpm install重新安装 - 就像:你不会把超市的货架搬回家,只需要带购物清单(
package.json)
- 体积巨大(几百MB),且可以通过
-
构建产物(
.next/,dist/)- 这些是代码编译后的结果,可以随时通过
pnpm build重新生成 - 就像:你不会把做好的饭菜打包带走,只需要带菜谱(源代码)
- 这些是代码编译后的结果,可以随时通过
-
系统生成文件(
.DS_Store,Thumbs.db)- 这是操作系统自动生成的,与项目代码无关
-
敏感配置(
.env)- 包含数据库密码、API密钥,一旦泄露后果严重
3. 标准模板
在项目根目录(和package.json同级)新建文件.gitignore,复制以下内容:
# 1. 依赖包
node_modules/
.pnpm-store
# 2. 构建产物
.next/
dist/
out/
build/
# 3. 环境变量
.env
.env.local
.env.*.local
# 4. 系统垃圾
.DS_Store
Thumbs.db
*.log
4. 应用场景
| 文件类型 | 是否忽略? | 理由 |
|---|---|---|
src/main.ts |
Keep | 这是源代码,必须传 |
package.json |
Keep | 这是购物清单,队友根据它买依赖 |
node_modules/ |
Ignore | 这里面有几万个文件,体积巨大,且可以重新生成 |
.env.local |
Ignore | 包含私钥 |
npm-debug.log |
Ignore | 报错现场记录,没价值 |
5. 救火方案
如果你已经把node_modules传上去了,光改.gitignore文件没用,因为Git已经记住了这些文件。需要从Git的"记忆"里删除:
# 从Git索引中删除,但保留本地文件
git rm -r --cached .
# 重新添加所有文件(这时候gitignore才会生效)
git add .
git commit -m "Fix: apply gitignore"
6. 避坑指南
| ✅ 推荐做法 | ❌ 禁忌 |
|---|---|
| 先写.gitignore再写代码 | 项目做了一半才想起来加(这时候历史记录已经脏了) |
使用通配符(*.log) |
一个个列出文件名(累死你) |
检查状态(git status) |
盲目执行git add .(这就是万恶之源) |
7. 本章小结
Vibe心法:仓库不是垃圾箱,也不是备份站——排除
node_modules和构建产物,确保每次运行都是基于package.json的纯净重构。
关键要点:
- 📦 减肥:忽略
node_modules可以让你的仓库从500MB瘦身到500KB - 🔐 安全:忽略
.env是防止密钥泄露的第一道防线 - 🎯 专业:不上传
.DS_Store等系统垃圾,体现了你的职业素养 - 🔄 可重现:依赖包和构建产物都可以重新生成,不需要版本控制