文章目录
- 前言
- .gitignore 模式匹配
- 注释 `#`
- 转义 `\`
- 直接匹配
- 任意字符匹配 `*`
- 单个字符匹配 `?`
- 目录分割 `/`
- 多级目录 `**`
- 范围匹配 `[]`
- 取消匹配 `!`
- 检查是否生效
- 父子文件
- END
前言
Git - gitignore Documentation (git-scm.com)
在使用git
管理的项目中,可以通过.gitignore
文件管理一些需要忽略管理的文件。
注意就是全名为:.gitignore
的文件。
.gitignore 模式匹配
注释 #
# 使用`#`进行注释
转义 \
# `\` 表示转义符号
直接匹配
忽略所有匹配的文件
和文件夹
。
main.cpp
build
任意字符匹配 *
*
表示0或多个字符。
注意:不可以匹配/
。
# 匹配所有后缀为`.log`的文件
*.log
单个字符匹配 ?
?
表示1个字符匹配。
注意:不可以匹配/
。
# 匹配所有后缀为`.log`且名字只有一个字符的文件
?.log
目录分割 /
开头
表示从当前的.gitignore
文件路径进行匹配。
# 只对当前路径下的 test.cpp 起作用
/test.cpp
中间
最常见的含义,表示中间路径。
build/main.exe
末尾
只忽略文件夹,不忽略文件。
build/
多级目录 **
**
用于多级目录的匹配。
弥补了*和?
无法匹配/
的问题。
# 匹配多级目录
build/**/Debug
范围匹配 []
有点类似正则表达式。
# 0.txt ~ 9.txt
[0-9].txt
# xay.txt xby.txt xcy.txt
x[abc]y.txt
取消匹配 !
!
用于取消已经匹配了的内容。
notes:一般建一个空白的.gitkeep
来保证项目文件夹的存在。
特别注意:当该文件的父文件目录被排除时,这整个规则会无效。
!*.gitkeep
检查是否生效
# 若没被忽略则会显示
git check-ignore <文件或目录>
# -v 查看是被哪条规则忽略的
git check-ignore -v <文件或目录>
help信息:
usage: git check-ignore [<options>] <pathname>...
or: git check-ignore [<options>] --stdin
-q, --quiet suppress progress reporting
-v, --verbose be verbose
--stdin read file names from stdin
-z terminate input and output records by a NUL character
-n, --non-matching show non-matching input paths
--no-index ignore index when checking
父子文件
当在子文件夹有.gitignore
文件时。当前子文件夹会遵守当前的.gitignore
并忽略父文件夹下的规则。
END
ref:
【忽略文件版本控制gitignore详解,git-ignore精讲教程,2022年最新git基础使用,git进阶教程,git必备技能】
关注我,学习更多C/C++,算法,计算机知识
B站:
👨💻主页:天赐细莲 bilibili