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

相关推荐
MatrixOrigin10 小时前
MatrixOne Git4Data 技术详解(二):从零跑通所有 Git 原语
git
anew___11 小时前
常用的 Git 工作流
git
shimly12345611 小时前
git diff 生成一部分文件的补丁
git
m0_5791466512 小时前
Git 重置模式详解:四种重置方式的原理与应用场景
git
恋喵大鲤鱼12 小时前
git grep
git·git grep
霸王龙的小胳膊12 小时前
Git基础知识
git
恋喵大鲤鱼13 小时前
git fetch
git·git fetch
Java知识技术分享13 小时前
安装sourcetree
java·git·源代码管理
恋喵大鲤鱼13 小时前
git revert
git·git revert
爱和冰阔落13 小时前
【Codex项目实战】从模糊需求到可验证交付:Plan、测试、Review与Worktree完整流程
人工智能·git·codex