常见问题

忽略文件

文件​​.gitignore​​的作用范围是其所处的目录及其子目录。忽略只对未跟踪文件有效,对于已加入版本库的文件无效!

本地独享式忽略文件

  • 一种是针对具体版本库的“独享式”忽略。即在版本库​​.git​​​目录下的一个文件​​.git/info/exclude​​来设置文件忽略。
  • 另外一种是全局的“独享式”忽略。即通过Git的配置变量​​core.excludesfile​​指定的一个忽略文件,其设置的忽略对所有文件均有效。

Git忽略语法

*.a       # 忽略所有以 .a 为扩展名的文件。
!lib.a # 但是 lib.a 文件或者目录不要忽略,即使前面设置了对 *.a 的忽略。
/TODO # 只忽略根目录下的 TODO 文件,子目录的 TODO 文件不忽略。
build/ # 忽略所有 build/ 目录下的文件。
doc/*.txt # 忽略文件如 doc/notes.txt,但是文件如 doc/server/arch.txt 不被忽略。
  • 可以使用通配符,参见Linux手册:glob(7)。例如:星号(*)代表任意多字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围等。
  • 如果名称的最前面是一个路径分隔符(/),表明要忽略的文件在此目录下,而非子目录的文件。
  • 如果名称的最后面是一个路径分隔符(/),表明要忽略的是整个目录,同名文件不忽略,否则同名的文件和目录都忽略。
  • 通过在名称的最前面添加一个感叹号(!),代表不忽略。

文件名大小写问题

Linux、Solaris、BSD及其他类Unix操作系统使用的是大小写敏感的文件系统,而Windows和Mac OS X(默认安装)的文件系统则是大小写不敏感的文件系统。即用文件名​​README​​​、​​readme​​​以及​​Readme​​​(混合大小写)进行访问,在Linux等操作系统上访问的是不同的文件,而在Windows和Mac OS X上则指向同一个文件。换句话说,两个不同文件​​README​​​和​​readme​​在Linux等操作系统上可以共存,而在Windows和Mac OS X上,这两个文件只能同时存在一个,另一个会被覆盖,因为在大小写不敏感的操作系统看来,这两个文件是同一个文件。

可以通过设置**core.ignorecase **为false,来开启文件名大小写敏感!

$ git config core.ignorecase false

换行符问题

文本文件的每一行结尾用一个或者两个特殊的ASCII字符进行标识,这个标识就是换行符。

  • LF,“​​\\n​​”表示:用于Multics、Unix、类Unix(如GNU/Linux、AIX、Xenix、Mac OS X、FreeBSD等)、BeOS、Amiga、RISC OS等操作系统中
  • CR,“​​\\r​​”表示:用于DEC TOPS-10、RT-11和其他早期的非Unix,以及CP/M、MP/M、DOS(MS-DOS、PC-DOS等)、Atari TOS、OS/2、Microsoft Windows、Symbian OS、Palm OS等系统中
  • CRLF,“​​\\r\\n​​”表示:用于Commodore 8位机、TRS-80、苹果II家族、Mac OS 9及更早版本
$ git config --global core.autocrlf true/input

​http://www.worldhello.net/gotgit/08-git-misc/040-eol.html​

延伸阅读

Git的功能极其强大,我们可以使用Git做更多有意义的事情。

  • 搜索工作区内容
$ git grep '搜索内容'