关于.gitignore

当我们使用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

两个星号连在一起在路径中有特殊的含义:

  1. **/foo表示的是任意路径下的foo文件或路径;**/foo/bar表示的是任意路径下在foo里面的bar文件或路径。
  2. abc/**表示的是abc下的所有文件,具有无限深度。
  3. a/**/b表示a/b,a/x/b或者a/x/y/b等等。
  4. 除上述三种情形之外的连续星号视为非法。

另外,gitignore.io可以帮你自动生成常规的.gitignore文件。

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s