.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

相关推荐
Franklin3 小时前
VS 版本更新git安全保护问题的解决
git
我是一只代码狗6 小时前
idea中合并git分支
git
我是一只代码狗6 小时前
idea中使用git
git·gitee·github
恋喵大鲤鱼7 小时前
git restore
git·git restore
李少兄7 小时前
Git Commit Message写错后如何修改?已Push的提交如何安全修复?
git·安全
Fireworkitte7 小时前
git stash
git
产品经理独孤虾8 小时前
GitHub Copilot:产品经理提升工作效率的AI助手
github·copilot·产品经理·原型设计·ai工具·效率提升·prd
杜莱10 小时前
IDEA 安装AI代码助手GitHub Copilot和简单使用体验
人工智能·github·intellij-idea
LogicFlow11 小时前
对单调的画布说拜拜👋🏻
前端框架·开源·github