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 忽略的文件 / 文件夹,避免无关文件提交到仓库。

相关推荐
先跑起来再说11 小时前
Git 入门到实战:一篇搞懂安装、命令、远程仓库与 IDEA 集成
ide·git·后端·elasticsearch·golang·intellij-idea
承渊政道14 小时前
Linux系统学习【Linux系统的进度条实现、版本控制器git和调试器gdb介绍】
linux·开发语言·笔记·git·学习·gitee
Doro再努力15 小时前
【Linux操作系统12】Git版本控制与GDB调试:从入门到实践
linux·运维·服务器·git·vim
摇滚侠17 小时前
MAC IDEA GIT 提交区显示了几个不存在的目录
git·idea
城东18 小时前
Git使用[远程仓库远端的head比本地和提交的head旧,其他人拉不到最新代码]
git·head·远程仓库远端·比本地和提交的head旧·其他人拉不到最新代码
何中应1 天前
使用SSH地址拉取远程仓库代码报下面的错误
git
何中应1 天前
Git本地仓库命令补充
git
sun0077001 天前
执行repo sync -c -d -j4以后,提交未git push的代码看不到了。要怎么恢复?
git
胖虎11 天前
Git 一个本地仓库同时推送到两个远程仓库(详细教程)
git·多远程仓库·双远程仓库·git双远程·git备份
春日见2 天前
如何创建一个PR
运维·开发语言·windows·git·docker·容器