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

相关推荐
灰色人生qwer2 小时前
git add . 添加超长文件名报错了怎么办?
git·python·elasticsearch
星海拾遗11 小时前
git rebase记录
大数据·git·elasticsearch
ljh57464911913 小时前
PhpStorm 2022.3 版本中,修改使用 Git 提交时看到弹出式的对话框模式
ide·git·php·phpstorm
云闲不收14 小时前
git rebase
git
江上清风山间明月14 小时前
git pull和git checkout在恢复文件的区别
git·pull·checkout
海鸥8116 小时前
in argocd ‘/tmp/_argocd-repo/../.git/index.lock‘: No space left on
git·argocd
尔嵘17 小时前
git操作
大数据·git·elasticsearch
好评12417 小时前
Linux文件上传git
linux·运维·git
大柏怎么被偷了19 小时前
【Git】企业级开发模型
git