【Git】.gitignore 的匹配规则

  1. 每行一个规则:每行只能包含一个规则,多个规则需要分别写在不同的行上。

    示例:

    复制代码
    # 忽略日志文件
    logs/
    # 忽略临时文件
    temp.txt
  2. 种类匹配:

    • 文件:在规则的开头指定文件名或路径,如 file.txt

    示例:

    复制代码
    # 忽略文件 file.txt
    file.txt
    # 忽略同名目录或者文件(不论嵌套)
    dist
    • 目录:在规则的开头用斜杠 / 指定目录名或路径,如 /dir/

    示例:

    复制代码
    # 忽略目录 dir(从当前目录出发寻找)
    /dir/
    
    # 忽略目录或者文件 dir(从当前目录出发寻找)
    dir
    # 忽略目录或者文件 dir(从当前目录出发寻找)
    /dir
    • 通配符:

      • *:匹配任意数量(0个或多个)的字符,但不包括路径分隔符(斜杠)。

      示例:

      复制代码
      # 忽略所有 .txt 结尾的文件
      *.txt
      • ?:匹配单个字符,但不包括路径分隔符。

      示例:

      复制代码
      # 忽略 a.txt 或 aa.txt,但不忽略 aatxt
      a?.txt
      • **:匹配任意数量的字符,包括路径分隔符。可用于匹配子目录和嵌套目录。

      示例:

      复制代码
      # 忽略所有的 .txt 文件,无论它们在哪个目录下
      **/*.txt
      # 从当前目录出发,忽略a目录下的.jpg(不含嵌套)
      /a/*.jpg
      # 从当前目录出发,忽略a目录下的所有.jpg(含嵌套)
      /a/**/*.jpg
    • 斜杠 /:用于指定匹配相对于 .gitignore 文件所在位置的路径。

    示例:

    复制代码
    # 忽略当前目录下的 notes.txt 文件
    /notes.txt
  3. 注释:

    • 使用 # 标记注释行,注释行将被忽略。

    示例:

    复制代码
    # 这是一个注释
  4. 反转规则:使用 ! 前缀。如果规则以 ! 开头,则表示不忽略匹配的文件或目录。(一般用于保留之前已经匹配忽略的文件或目录)

    示例:

    复制代码
    # 忽略所有 .txt 文件,但不忽略 important.txt
    *.txt
    !important.txt

    此实例表示忽略upload 目录下的所有文件,但是我们此时想要保留该目录,所有可以指定一个文件 .gitkeep,然后保留该目录下的 .gitkeep 文件,也就是保留了该目录。

  5. 行尾斜杠 /:如果规则以 / 结尾,则该规则将匹配目录而非文件。

    示例:

    复制代码
    # 忽略整个 logs 目录
    logs/
  6. 递归通配符 **:递归地匹配任意路径段,包括子目录和嵌套目录,例如 /dir/**/*.txt

    示例:

    复制代码
    # 忽略 dir 目录及其子目录下的所有 .txt 文件
    /dir/**/*.txt
  7. 忽略空目录:.gitignore 文件本身无法忽略空目录,因为 Git 不跟踪空目录。但你可以在目录中创建一个 .gitkeep 文件,使 Git 跟踪该目录。

    示例:

    复制代码
    # 忽略空目录
    /emptydir/.gitkeep

请注意,.gitignore 规则基于模式匹配,并且相对于 .gitignore 文件的位置。

参考 Git 官方文档以获取更多信息:https://git-scm.com/docs/gitignore

相关推荐
见闻小天地13 分钟前
从晶片工艺到可靠性验证:晶威特TF-3215型RTC晶振全面解析
运维·业界资讯
沸速存储30 分钟前
AI 机器人靠哪些内存与存储驱动整机运行?
服务器·科技·嵌入式硬件·电脑
码农小韩41 分钟前
Linux应用开发(八)——TCP/IP网络编程基础
linux·嵌入式软件开发·linux操作系统·嵌入式操作系统·linux网络编程·linux应用
迷途之人不知返1 小时前
【进程】-5-进程优先级
linux
名字还没想好☜1 小时前
Docker 网络实战:bridge/host/none/自定义网络、容器互通与端口映射踩坑
运维·docker·kubernetes
fengyehongWorld1 小时前
Linux squid搭建基础代理服务器
linux·运维·服务器
木白CPP1 小时前
Linux DMA驱动详解(二)-----DMA的使用者
java·linux·运维
赵民勇2 小时前
systemd-socket-activate命令详解
linux·运维
跨境小彭2 小时前
Temu运营避坑:制造地点信息填写规范、后果及批量实操教程
大数据·运维·自动化·跨境电商·temu
Cx330❀2 小时前
【Linux网络】网络层 IP 协议:从网段划分到内核源码解析
大数据·linux·服务器·网络·tcp/ip·性能优化·langchain