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