一. 通配符
在 .gitignore 文件中,通配符用于匹配文件和文件夹的名称,以控制 Git 忽略哪些文件或文件夹。下面是一些常用的通配符的使用示例:
-
*:匹配零个或多个字符。- 例如,
*.txt会匹配所有以.txt结尾的文件。
- 例如,
-
?:匹配一个字符。- 例如,
test?.txt会匹配test1.txt和test2.txt,但不会匹配test12.txt。
- 例如,
-
**:匹配零个或多个目录。- 例如,
logs/**/*.log会匹配logs/a/b/c.log、logs/x/y/z.log等。
- 例如,
-
/:指定路径。- 例如,
/logs/会匹配根目录下的logs文件夹,但不会匹配src/logs。
- 例如,
-
!:否定模式,表示不忽略某些文件或文件夹。
使用通配符的一些示例:
-
忽略所有的
.txt文件:*.test -
忽略某个特定文件夹下的所有文件:
path/to/folder/ -
忽略所有以
.log结尾的文件,但不包括test.log:*.log !test.log -
忽略某个文件夹及其子文件夹下的所有
node_modules文件夹:node_modules/
需要注意的是,.gitignore 文件可以放在项目的根目录下,也可以放在特定的子目录下,它会对该目录及其子目录生效。
二. .gitignore 中常用的忽略规则
.gitignore 是一个用于配置 Git 版本控制系统忽略指定文件或目录的规则文件。它可以用来排除不需要提交到代码仓库中的临时文件、编译产物、个人敏感信息等。下面是通配符的使用:
可以使用通配符来匹配多个文件或目录。常用的通配符有:
*.txt // 忽略所有以.txt结尾的文件
build/ // 忽略根目录下的build目录
tmp/*.log // 忽略tmp目录下所有.log文件
test/**/*.tmp // 忽略test目录及其子目录下的所有.tmp文件
/.vscode // 忽略根目录下的.vscode目录
!src/foo.txt // 不忽略根目录下的src目录下的foo.txt文件
文件类型模板:
Git 提供了一些常见文件类型的模板,可以直接使用,例如:
*.html // 忽略所有HTML文件
*.o // 忽略所有目标文件
可以在.gitignore文件中使用这些模板,避免重复配置。
模式的优先级:
.gitignore 文件中的模式按照 从上到下的顺序逐条匹配,如果遇到匹配的模式,则后面的模式不再生效 。如果要取消对某个文件的忽略,可以使用!前缀特别指定。
需要注意的是,已经被Git跟踪的文件不会受到 .gitignore 的影响。要忽略已经被提交的文件,可以使用 git rm --cached <file>命令将其从版本控中移除,例如:
git rm -r --cached .vscode/
这条命令会从 Git 的索引中移除 .vscode 文件夹中的所有文件,但不会删除本地文件。