在团队协作开发中,总有些文件不该被提交到代码仓库里。比如本地的配置文件、编译生成的临时文件、IDE 自动生成的缓存目录。一不小心把它们推上去,轻则让同事拉代码时一脸懵,重则可能泄露敏感信息。
为什么需要忽略文件
举个例子,你用 VS Code 写代码,项目根目录下多了个 .vscode/settings.json,里面写着你的个人偏好设置。另一个用 Vim 的同事看到这个文件就头疼——这玩意儿跟他没关系,还容易在合并时产生冲突。更别说像 .env 这种存着数据库密码的文件,一旦上传,风险不小。
靠 .gitignore 来管住这些文件
Git 提供了 .gitignore 文件,专门用来声明哪些内容不需要纳入版本控制。只要把这个文件放在项目根目录,Git 就会自动跳过里面列出的路径。
比如你想忽略所有日志文件和 macOS 自动生成的 .DS_Store,可以这样写:
# 忽略所有 .log 结尾的文件
*.log
# 忽略系统隐藏文件
.DS_Store
# 忽略 node_modules 目录
node_modules/
# 忽略本地环境变量
.env
.env.local
每一行代表一个规则,# 开头的是注释。星号 * 是通配符,匹配任意字符。加个斜杠 / 表示整个目录。
不同层级的忽略策略
除了项目根目录下的 .gitignore,你还可以在子目录里放独立的 .gitignore,只对当前目录生效。另外,如果想忽略某个文件但又不想提交 .gitignore 变更,可以用 git update-index --assume-unchanged <file> 告诉 Git “假装没看见它”。
反过来,如果某个文件已经被跟踪了,后来才加入 .gitignore,那它依然会被继续监控。得先从缓存中移除:
git rm -r --cached node_modules/
git commit -m "Remove ignored files"
别忘了云存储场景下的特殊处理
现在很多项目部署在云端,CI/CD 流程会自动拉取代码构建。如果漏掉了关键的忽略规则,可能导致构建产物被反复提交,浪费存储空间。比如前端项目打包后的 dist 目录,本地测试时生成的 upload_test/ 临时文件夹,都应该提前屏蔽。
有些团队还会维护全局的 .gitignore 模板,比如针对 Python、Java 或 React 项目的通用规则,避免每次新建项目都从头写。
一个小小的 .gitignore,看似不起眼,却能省掉不少麻烦。就像出门前检查钥匙、手机、钱包一样,提交代码前扫一眼忽略列表,是每个开发者该有的习惯。