.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

相关推荐
wuk9989 小时前
基于MATLAB编制的锂离子电池伪二维模型
linux·windows·github
ai小鬼头10 小时前
AIStarter如何助力用户与创作者?Stable Diffusion一键管理教程!
后端·架构·github
天天扭码10 小时前
从图片到语音:我是如何用两大模型API打造沉浸式英语学习工具的
前端·人工智能·github
&Sinnt&12 小时前
Git 版本控制完全指南:从入门到精通
git·后端
独立开阀者_FwtCoder13 小时前
【Augment】 Augment技巧之 Rewrite Prompt(重写提示) 有神奇的魔法
前端·javascript·github
极客悟道15 小时前
巧解 Docker 镜像拉取难题:无需梯子和服务器,拉取数量无限制
后端·github
Tiny21415 小时前
多人协同开发时Git使用命令
git
独立开阀者_FwtCoder15 小时前
你用 Cursor 写公司的代码安全吗?
前端·javascript·github
WebGirl16 小时前
代码Revert后再次Merge会丢失的问题
git
T__TIII17 小时前
Dify 自定义插件
人工智能·github