.gitignore文件的规范

.gitignore 文件用于指定 Git 版本控制中需要忽略的文件和目录,避免不必要的文件被跟踪。

基本规则

  1. 空行与注释

    • 空行:被忽略,用于分隔规则。
    • 注释:以 # 开头,例如:
    gitignore 复制代码
    # 忽略日志文件
    *.log
  2. 忽略文件/目录

    gitignore 复制代码
    temp.txt      # 忽略所有 temp.txt文件
    build/        # 忽略所有 build 目录
  3. 通配符

    • *:匹配任意字符(除路径分隔符 /)。
    gitignore 复制代码
    *.tmp        # 忽略所有 .tmp 后缀文件
    • ?:匹配单个字符。
    gitignore 复制代码
    ??test.txt   # 忽略 aatest.txt、abtest.txt 等
    • []:匹配括号内任一字符。
    gitignore 复制代码
    [abc].txt    # 忽略 a.txt、b.txt、c.txt
  4. 路径分隔符 /

    • 开头 /:仅匹配项目根目录。
    gitignore 复制代码
    /config.env  # 忽略根目录的 config.env(不忽略 src/config.env)
    • 结尾 /:仅匹配目录(不匹配同名文件)。
    gitignore 复制代码
    dist/       # 忽略所有 dist 目录(不忽略 dist 文件)
  5. 双星号 **

    • 匹配任意层级目录:
    gitignore 复制代码
    logs/**/*.log # 忽略 logs/ 下所有子目录的 .log 文件
    **/debug      # 忽略所有名为 debug 的目录/文件

进阶规则

  1. 取反规则 !

    • 在忽略规则中排除特定文件(必须写在忽略规则之后):
    gitignore 复制代码
    *.js           # 忽略所有 .js 文件
    !index.js      # 不忽略根目录的 index.js
    • 注意 :若父目录被忽略,! 无法生效(如 logs/** 被忽略后,!logs/error.log 无效)。
  2. 目录与文件的区别

    • 规则不包含 / 时,同时匹配文件和目录:

      gitignore 复制代码
      cache      # 忽略 cache 文件和 cache/ 目录
    • 明确目录时添加 / 后缀:

      gitignore 复制代码
      cache/     # 仅忽略 cache 目录

示例解析

gitignore 复制代码
# 忽略所有 .class 文件
*.class

# 不忽略 target/ 下的 Example.class
!target/Example.class

# 忽略根目录的 .env 文件
/.env

# 忽略 node_modules 目录(任意位置)
node_modules/

# 忽略 docs 目录下所有 .md 文件(除 README.md)
docs/*.md
!docs/README.md

# 忽略 logs/ 及其子目录的所有文件
logs/**

优先级与匹配顺序

  • 规则按行从上到下匹配,后面的规则覆盖前面的冲突部分
  • 同一目录可存在多层 .gitignore 文件,子目录规则优先级更高

注意事项

  1. 已跟踪文件的处理

    • .gitignore 对已加入版本控制的文件无效。需先删除跟踪:

      bash 复制代码
      git rm --cached <file>  # 停止跟踪但不删除文件
      git commit -m "停止跟踪文件"
  2. 全局忽略配置

    • 创建全局规则(适用于所有项目):

      bash 复制代码
      git config --global core.excludesFile ~/.gitignore_global

相关推荐
semantist@语校10 小时前
语校网500所里程碑:日本语言学校数据库的标准化与可追溯机制
大数据·数据库·人工智能·百度·语言模型·oracle·github
CoderJia程序员甲1 天前
GitHub 热榜项目 - 日榜(2025-10-01)
ai·开源·github·ai编程·github热榜
紫钺-高山仰止1 天前
【Pyzmq】python 跨进程线程通信 跨平台跨服务器通信
服务器·python·github
芥子沫1 天前
GitHub 使用技巧
github·使用技巧·代码管理
2401_884810741 天前
git知识点
git
圆肖1 天前
[陇剑杯 2021]简单日志分析(问3)
前端·经验分享·github
Akshsjsjenjd1 天前
Nginx 访问控制、用户认证、HTTPS配置实操手册
nginx·https·github
小牛itbull1 天前
从 Vercel 构建失败谈 Git 大小写敏感性问题:一个容易被忽视的跨平台陷阱
git
uhakadotcom1 天前
入门教程:常用的 Python 第三方库:python-logstash
后端·面试·github
chainbees1 天前
Git账号配置 SSH 密钥
运维·git·ssh