当我们刚开始接触 Git 时,最常用的命令往往是:
csharp
git init
git add .
git commit -m "first commit"
很多人会发现,执行完 git add . 之后,Git 似乎把整个项目目录里的文件都加入了版本控制。
这时就会产生一个问题:
是不是所有文件都应该提交到 Git 仓库?
答案显然是否定的。
而解决这个问题的关键文件,就是今天要介绍的------.gitignore。
什么是 .gitignore?
.gitignore 是 Git 项目中的一个配置文件。
它的作用非常简单:
告诉 Git 哪些文件或目录不需要纳入版本控制。
换句话说,当 Git 扫描项目文件时,会先查看 .gitignore 中的规则。
符合规则的文件将被忽略,不会出现在待提交列表中。
为什么需要 .gitignore?
假设你正在开发一个 Vue 或 uni-app 项目。
项目目录可能长这样:
go
project/
├── src/
├── node_modules/
├── unpackage/
├── package.json
├── package-lock.json
└── .gitignore
如果没有配置 .gitignore,执行:
csharp
git add .
Git 会把所有文件都加入版本控制。
这可能带来很多问题:
1. 仓库体积暴增
例如:
node_modules/
里面可能包含:
- 数万个文件
- 数百 MB 甚至数 GB 数据
而这些内容完全可以通过:
npm install
重新生成。
上传到 Git 仓库不仅浪费空间,还会降低克隆速度。
2. 临时文件污染仓库
开发过程中会产生很多临时文件:
bash
*.log
.cache
.temp
这些文件对项目本身没有任何价值。
如果提交到仓库:
- 历史记录会变得混乱
- 团队成员经常出现无意义冲突
3. 泄露敏感信息
很多项目会存在:
bash
.env
.env.local
文件。
里面可能包含:
vbnet
数据库密码
API Key
服务器地址
Token
如果误提交到 GitHub:
后果可能非常严重。
因此这些文件通常会被加入 .gitignore。
.gitignore 如何编写?
忽略整个目录
node_modules/
表示忽略:
node_modules/
目录下的所有文件。
忽略指定文件
arduino
config.json
表示忽略:
arduino
config.json
文件。
忽略某种后缀
bash
*.log
表示忽略:
lua
app.log
error.log
system.log
所有 .log 文件。
忽略多个目录
node_modules/
dist/
build/
表示同时忽略多个目录。
前端项目常见配置
对于 Vue、React、uni-app 项目来说,通常会写:
bash
# 依赖
node_modules/
# 打包结果
dist/
build/
unpackage/
# 日志
*.log
# VSCode
.vscode/
# IDEA
.idea/
# Mac
.DS_Store
# Windows
Thumbs.db
这已经能够覆盖大部分场景。
uni-app 项目推荐配置
如果你使用的是 HBuilderX 开发 uni-app 项目,可以直接使用下面的配置:
bash
# 依赖
node_modules/
# HBuilderX缓存
.hbuilderx/
# 打包输出
unpackage/
# 日志
*.log
# IDE
.vscode/
.idea/
# 系统文件
.DS_Store
Thumbs.db
其中:
unpackage/
是 HBuilderX 打包后的产物。
通常不需要提交到仓库。
一个新手最容易踩的坑
很多人会遇到这种情况:
先执行:
sql
git add .
git commit -m "init"
然后才添加:
node_modules/
结果发现:
node_modules 仍然被提交
为什么?
因为:
.gitignore 只能忽略未被 Git 跟踪的文件。
已经提交过的文件,即使后来加入 .gitignore,Git 仍然会继续跟踪。
如何解决?
需要先从 Git 缓存中移除:
bash
git rm -r --cached node_modules
然后重新提交:
sql
git commit -m "remove node_modules"
此时 .gitignore 才会真正生效。
我的建议
对于绝大多数项目来说,.gitignore 不是可选项,而是必备项。
养成以下习惯:
- 创建项目后第一时间配置
.gitignore - 不提交依赖包目录
- 不提交编译产物
- 不提交日志文件
- 不提交密码、Token 等敏感信息
这样不仅能让仓库保持整洁,也能避免很多不必要的问题。
总结
一句话理解 .gitignore:
Git 负责记录应该保存的文件,而
.gitignore负责告诉 Git 哪些文件不值得保存。
对于个人开发者来说,它能让仓库更干净;
对于团队开发来说,它能减少冲突,提高协作效率。
虽然只是一个小小的配置文件,但几乎每一个成熟的 Git 项目都离不开它。