忽略文件
一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。
创建.gitignore
文件
很多人恐怕在第一步就卡住了,比如“创建.gitignore
文件”(因为用我们常规的鼠标右键的方式是无法实现的)。
请打开你的Git Bash
命令行工具,输入以下命令:
- 创建
.gitignore
文件命令
$ touch .gitignore
注意: 用ls
命令是查看不了.
开头的文件的,您需要用ls -a
命令来查看上一步创建的.gitignore
文件。
- 查看
.gitignore
文件
$ view .gitignore
当然,你也可以通过编辑器打开的方式来查看。
文件 .gitignore
的格式规范如下:
- 所有空行或者以
#
开头的行都会被Git
忽略。 - 可以使用标准的
glob
模式匹配。 - 匹配模式可以以(
/
)开头防止递归。 - 匹配模式可以以(
/
)结尾指定目录。 - 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(
!
)取反。
glob 模式匹配规则:
*
匹配0或多个除了/
以外的字符,注意不匹配以.
开始的路径,如文件.a
?
匹配单个除了/
以外的字符[…]
匹配一系列字符,如[abc]
匹配字符a, b, c[^…]
和[!…]
表示匹配不在列表中的字符,如[^abc]
匹配除了a, b, c以外的字符。**
匹配多个字符包括/
{a,b}
匹配a或则b,a和b也是通配符,可以由其他通配符组成!
出现在规则的开头,表示取反。即匹配不命中后面规则的文件
.gitignore
配置案例
# “#”号表示此为注释,将被Git忽略
*.a # 表示忽略所有 .a 结尾的文件
!lib.a # 表示但lib.a除外
/TODO # 表示仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ # 表示忽略 build/目录下的所有文件,过滤整个build文件夹;
doc/*.txt # 表示会忽略doc/notes.txt但不包括 doc/server/arch.txt
bin/: # 表示忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
/bin: # 表示忽略根目录下的bin文件
/*.c: # 表示忽略cat.c,不忽略 build/cat.c
debug/*.obj: # 表示忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj
**/foo: # 表示忽略/foo,a/foo,a/b/foo等
a/**/b: # 表示忽略a/b, a/x/b,a/x/y/b等
!/bin/run.sh # 表示不忽略bin目录下的run.sh文件
*.log: # 表示忽略所有 .log 文件
config.php: # 表示忽略当前路径的 config.php 文件
事实上我们可以去“扒”一个模板
GitHub
有一个十分详细的针对数十种项目及语言的 .gitignore
文件列表,你可以在
https://github.com/github/gitignore 找到它。