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

相关推荐
宁静的舞者3 小时前
Git、GitHub、Codeup(云效代码仓库)详解
git·代码仓库·codeup·云效
陈佬昔没带相机3 小时前
Git Worktree: AI 编程 Agent 并行开发的秘密武器
git·agent
栈时没有名字9 小时前
git仓库管理,commit或push上传服务器失败问题
git·嵌入式
金銀銅鐵10 小时前
[git] 如何丢弃对一个文件的改动?
git·后端
JAVA面经实录91714 小时前
Java开发工程基础完整手册(企业实战完整版)
java·开发语言·git·ci/cd·svn·github·intellij idea
草履虫君15 小时前
若用wsL方式安装openclaw 就不需要安装win原生的node和git
经验分享·git·ai
手握风云-15 小时前
深入 Git:它是如何记录世界的(一)
git
华科大胡子16 小时前
Git Submodule深度避坑指南
git
花开花落为谁愁18 小时前
Git核心命令速查表
大数据·git·elasticsearch
雨声不在18 小时前
家用小GIT
git