gitignore文件如何添加忽略文件或文件夹

一、.gitignore 核心规则

.gitignore 通过路径匹配规则忽略文件 / 文件夹,核心原则:

  • 路径基于 .gitignore 所在目录(项目根目录最常用);
  • 以 / 结尾表示匹配文件夹;
  • 以 # 开头是注释;
  • 以 ! 开头表示反向忽略(排除已匹配的规则);
  • 通配符 * 匹配任意字符,** 匹配任意层级目录。

二、常用忽略场景示例

假设项目结构如下:

bash 复制代码
your-project/
├── .gitignore       # 根目录的忽略文件
├── node_modules/    # 依赖文件夹
├── dist/            # 打包输出文件夹
├── src/
│   ├── logs/        # 日志文件夹
│   ├── config.json  # 配置文件
│   └── temp/        # 临时文件夹
├── .env             # 环境变量文件
└── test/
    └── report.html  # 测试报告
1. 忽略根目录下的文件夹

规则: 直接写文件夹名 + /(推荐加 / 避免匹配同名文件)

bash 复制代码
# 忽略根目录的 node_modules 文件夹(所有子文件/子文件夹都忽略)
node_modules/

# 忽略根目录的 dist 文件夹
dist/
2. 忽略指定子目录下的文件夹 / 文件

规则: 写相对路径(从 .gitignore 所在目录开始)

bash 复制代码
# 忽略 src 下的 logs 文件夹
src/logs/

# 忽略 src 下的 temp 文件夹
src/temp/

# 忽略 src 下的 config.json 文件
src/config.json

# 忽略 test 下的 report.html 文件
test/report.html
3. 忽略所有目录下的同名文件 / 文件夹

规则: 不加路径前缀,匹配全项目的同名目标

bash 复制代码
# 忽略项目中所有叫 .env 的文件(任意目录)
.env

# 忽略项目中所有叫 temp 的文件夹(任意目录)
temp/

# 忽略所有 .log 后缀的文件(任意目录)
*.log
4. 忽略指定层级的目录(精准匹配)

规则: 用 / 限定层级,避免误匹配

bash 复制代码
# 只忽略根目录的 temp 文件夹(不忽略 src/temp)
/temp/

# 只忽略 src 下的 config.json(不忽略其他目录的 config.json)
/src/config.json
5. 反向忽略(排除已匹配的规则)

规则: ! + 路径(需先匹配忽略,再反向排除)

bash 复制代码
# 忽略所有 .log 文件
*.log

# 但保留 src/logs/important.log
!src/logs/important.log

# 忽略 src 下所有文件
src/*

# 但保留 src/index.js
!src/index.js
6. 通配符高级用法
bash 复制代码
# 匹配任意层级的 node_modules(如 a/node_modules、a/b/node_modules)
**/node_modules/

# 匹配 src 下所有 .json 文件(包括子目录)
src/**/*.json

# 匹配以 test 开头的文件夹(test1/、test2/ 等)
test*/

三、注意事项

  1. .gitignore 生效范围:
    • 优先读取项目根目录的 .gitignore;
    • 也可在子目录创建 .gitignore(规则仅对当前子目录生效);
    • 全局忽略:git config --global core.excludesfile ~/.gitignore_global(匹配所有本地仓库)。
  2. 已提交的文件 / 文件夹无法被忽略:
    如果文件已被 git add/git commit,需先移除追踪再忽略:
bash 复制代码
# 移除已追踪的文件夹(仅从 git 移除,保留本地文件)
git rm -r --cached node_modules/

# 提交忽略规则
git add .gitignore
git commit -m "add gitignore rules"
  1. 规则优先级:
    • 子目录 .gitignore 覆盖根目录规则;
    • ! 反向规则优先级高于普通忽略规则;
    • 精准路径(如 /src/config.json)优先于模糊匹配(如 *.json)。

通过以上规则,可精准控制 Git 忽略的文件 / 文件夹,避免无关文件提交到仓库。

相关推荐
mister_guo1 小时前
开发指南:Git日常维护与常用命令
git
鶴哥只手遮天6 小时前
Git 2.56 源码深度剖析:为 Git 3.0 铺路的架构重构
git·开源
小此方9 小时前
「插曲:Git」标签管理篇:理解Tag标签、为指定提交打标签、查看标签详情与附注标签
git
Madison-No710 小时前
多语言聊天大模型--测试报告
linux·git·python·selenium·jmeter·自动化·postman
小此方10 小时前
「插曲:Git」多人协作篇:远程分支创建与关联、多人协作冲突解决、Feature分支开发与合并、git remote prune清理失效分支
git
可乐ea12 小时前
Git 基础设施重建:智能体规模开发下的读写解耦
大数据·git·elasticsearch·分布式存储·git基础设施·智能体规模开发·读写解耦
信可维14 小时前
AI 说「改完了」怎么确认真改完了:git diff + 测试 + 一张验收表的 3 步复核
人工智能·git
Sun子矜15 小时前
Git+Gitee 新手教程精简归纳版
git·gitee
亿道电子Emdoor16 小时前
【Perforce】Klocwork-kwgcheck图形化界面无法打开如何解决
git·python·github
小此方2 天前
「插曲:Git」企业规范篇:DevOps开发模型、Git Flow五类分支设计与测试/预发布/生产环境Bug修复及Hotfix紧急发布流程
git·bug·devops