什么是 .gitignore?为什么每个 Git 项目几乎都离不开它?

当我们刚开始接触 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 不是可选项,而是必备项。

养成以下习惯:

  1. 创建项目后第一时间配置 .gitignore
  2. 不提交依赖包目录
  3. 不提交编译产物
  4. 不提交日志文件
  5. 不提交密码、Token 等敏感信息

这样不仅能让仓库保持整洁,也能避免很多不必要的问题。


总结

一句话理解 .gitignore

Git 负责记录应该保存的文件,而 .gitignore 负责告诉 Git 哪些文件不值得保存。

对于个人开发者来说,它能让仓库更干净;

对于团队开发来说,它能减少冲突,提高协作效率。

虽然只是一个小小的配置文件,但几乎每一个成熟的 Git 项目都离不开它。

相关推荐
谭光志5 小时前
Vibe Coding 时代,程序员该何去何从
前端·后端·ai编程
leoZ2316 小时前
Git 集成实战完全指南(二):智能分支管理
大数据·git·elasticsearch
仿生狮子7 小时前
别再说“全栈”了,AI 时代团队只认这 5 种人
前端·人工智能·后端
kyriewen7 小时前
AI 写的 React 组件,合并前必查的 6 个坏味道——每个都有代码对比
前端·javascript·react.js
Highcharts.js7 小时前
软件开发公司为什么选择 Highcharts?
前端·前端框架·echarts·数据可视化·技术选型·highcharts·图表工具
阿祖zu8 小时前
企业 AI 转型之痛,个人提效十倍不止,组织效率仍止步不前?
前端·aigc·agent
摇滚侠9 小时前
SpringBoot3+Vue3 全套视频教程 45-51
前端·javascript·vue.js
酸梅果茶10 小时前
【6】lightning_lm项目-LIO 前端 -点云预处理模块
前端·slam
Hilaku10 小时前
前端大裁员背后的恐慌:我们还剩什么底牌?
前端·javascript·程序员
咖啡无伴侣11 小时前
unplugin-auto-import 使用详解+面试高频考点
前端·架构