.gitignore的路径匹配规则

.gitignore 中,路径中的 / 会极大地影响它所匹配的目标。

首先,需要看路径结尾是否为 /

  1. 结尾不为 /:匹配文件和目录
  2. 结尾为 /:只匹配目录

接着,需要看路径是否开头为 / 或中间包含 /

  1. 开头不是 / 且中间不包含 /:以当前 .gitignore 所在目录及其任意子目录作为匹配的起点。
    • 比如,my-path 既可以匹配 my-path,也可以匹配 also/my-path
  2. 开头是 / 或中间包含 /:只以当前 .gitignore 所在目录作为匹配的起点。
    • 比如,/my-path 只匹配 my-path,不匹配 not/my-path
    • 比如,my/path 只匹配 my/path,不匹配 not/my/path

如果一条路径显式地以 **//**/ 开头,它仍然只以当前 .gitignore 所在目录作为匹配的起点,但 **/ 可以是任意子目录。

为了帮助记忆,可以把它近似理解成下面的流程:

  1. 如果开头是 /,直接保留原样,否则转到步骤 2
  2. 如果中间包含 /,在开头加上 /,否则转到步骤 3
  3. 在开头加上 /**/

也就是说,

  • /my/path -> /my/path
  • /my/path/ -> /my/path/
  • my/path -> /my/path
  • my/path/ -> /my/path/
  • /**/my-path -> /**/my-path
  • /**/my-path/ -> /**/my-path/
  • **/my-path -> /**/my-path
  • **/my-path/ -> /**/my-path/
  • my-path -> /**/my-path
  • my-path/ -> /**/my-path/

.gitignore的路径匹配规则
https://tomzhu.site/2026/07/19/gitignore的路径匹配规则/
作者
Tom Zhu
发布于
2026年7月19日
许可协议