当我们使用vim的时候总会有临时文件产生,例如.swp或者~。在以前粗放型的git使用中(使用git add –all命令),会把这些临时文件或者编译所产生的中间变量都加入到stage中。其实这种并不是一个好的(起码是精致的)git使用习惯。恰当的做法是使用.gitignore文件。
.gitignore文件有自己的格式:
以下转自刘大帅的解读与gitignore Manual Page
- 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
- 可以使用标准的 glob 模式匹配。
- 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
- 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc]匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如[0-9]示匹配所有0到9的数字)。
一个.gitignore例子:
#此为注释-将被git忽略
#忽略所有.a结尾的文件
*.a
#但lib.a除外
!lib.a
#仅仅忽略项目根目录下的TODO文件,不包括subdir/TODO
/TODO
#忽略build/目录下的所有文件
build/
#会忽略doc/notes.txt,但不包括doc/server/arch.txt
doc/*.txt
#ignore all .txt files in the doc/ directory
doc/**/*.txt
两个星号连在一起在路径中有特殊的含义:
- **/foo表示的是任意路径下的foo文件或路径;**/foo/bar表示的是任意路径下在foo里面的bar文件或路径。
- abc/**表示的是abc下的所有文件,具有无限深度。
- a/**/b表示a/b,a/x/b或者a/x/y/b等等。
- 除上述三种情形之外的连续星号视为非法。
另外,gitignore.io可以帮你自动生成常规的.gitignore文件。