在日常中,有些文件我们只想本地使用,不想上传到远程仓库中被别人看到,可如果我们不追踪这些文件,git status
时Git就会絮絮叨叨的提醒我们工作目录中一些未跟踪的文件,所以我们可以通过.gitignore
文件来让获得清净
由于我是在Windows环境下,不能直接创建空文件名的文件,所以去bash
里创建(移动到所在目录):
> touch .gitignore
用法:
假如我们要忽略一个临时文件test.tmp
,那么在.gitignore
文件中写入*tmp
即可
《Pro Git》里对.gitignore
格式规范的解释:
- 所有空行或者以注释符号 # 开头的行都会被 Git 忽略
- 可以使用标准的 glob 模式匹配
- 匹配模式最后跟反斜杠(/)说明要忽略的是目录
- 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反
glob模式:
指 shell 所使用的简化了的正则表达式
星号(*)匹配零个或多个任意字符
[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c)
问号(?)只匹配一个任意字符
如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)
所以 *tmp
,就是指忽略所有以tmp结尾的文件
再来看一个 .gitignore
文件的例子:
# 此为注释 – 将被 Git 忽略
# 忽略所有 .a 结尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 仅仅忽略项目根目录下的 TODO 文件
# 不包括 subdir/TODO
/TODO
# 忽略 build/ 目录下的所有文件
build/
# 忽略 doc 目录下的所有 .txt 文件
# 会忽略 doc/notes.txt
# 但不包括 doc/server/arch.txt
doc/*.txt
在项目一开始就把.gitignore设置好,可避免不必要的文件对代码产生干扰,比如有些需要本地生成的文件,如果放在远程仓库中被其他人下载使用,也可能会导致程序无法正常运行
参考: Crossin的编程教室