.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

相关推荐
Leo_Mr23 分钟前
Vue3 项目配置 Git 提交规范(企业通用方案:husky + commitlint + cz-git + lint-staged)
git
jyOverQ1 小时前
Git rebase 和 merge 有什么区别?什么时候该用哪个?
git
晗夜未央1 小时前
跨仓库 Skill 换台电脑就失效?用 Git remote 校验项目
人工智能·git·python
Lsetea1 小时前
Git访问HTTPS证书不受信任:用URL级sslCAInfo限定私有CA范围
git·https·开发工具·ssl证书·ca证书
miofly2 小时前
GitHub 日榜趋势速报 | 2026-10-30
开源·github
wflynn11 小时前
GitHub 日榜趋势速报 | 2026-10-28
开源·github
WebInfra16 小时前
Rspack 2.3 发布:联手 SWC 团队带来全新编译器
前端·javascript·github
এ慕ོ冬℘゜17 小时前
Git 基础入门|和 SVN 对比 + 四大区域 + 常用命令详解
git·svn
wflynn17 小时前
GitHub 今日推荐|rea:用 MCP 把反编译器和 AI agent 接到一起的逆向工具
typescript·开源·github·agent·agent-skills·binary-analysis
m4Rk_17 小时前
【论文阅读】Agent记忆机制(114):MemoryTax——当 Agent 能自主搜索历史,专门的记忆系统还划算吗?
论文阅读·人工智能·学习·开源·github