.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

相关推荐
白鲸开源2 小时前
Apache SeaTunnel Zeta Engine 的 Basic Auth 是怎么工作的?
java·vue.js·github
白鲸开源2 小时前
一文读懂DolphinScheduler插件机制:如何轻松扩展任务类型与数据源
java·架构·github
沉浸学习的匿名网友2 小时前
什么是 .gitignore?为什么每个 Git 项目几乎都离不开它?
前端·git
徐小夕1 天前
万字拆解 JitWord:企业级实时协同文档底层架构 + 大模型 AI 融合完整实践
前端·vue.js·github
深海鱼在掘金1 天前
Git 完全指南 —— 第3章:理解工作区、暂存区、版本库三个核心
git
码流怪侠1 天前
【GitHub】Ponytail:给 AI 编码代理植入“懒人资深开发者“灵魂的开源插件深度拆解
程序员·github·ai编程
齐翊1 天前
怎么确认 AI 看懂了你的提示词?
人工智能·github·ai编程
江华森1 天前
Git 基础筑基:从原理到团队协作的全栈实战
git
JakeJiang1 天前
Git 必备命令指南:从日常高频到项目开发实战
git
李小庆1 天前
Sowork AI Agent 编程助手教程 :第一章 Python环境搭建与Sowork项目克隆学习目标
github