.gitignore介绍
在工程实现过程中,会生成一些中间文件,或者在项目中的部分文件是不需要进行版本管理的。对于这些文件应该对于Github来讲是透明的。Github提供这种功能,可以自己指定哪些文件可以不被管理。具体方法是在版本管理的根目录下(与.git文件夹同级)创建一个 .gitignore(gitignore是隐藏文件,所以前面有个点)
使用gitignore文件来解决这个问题,步骤是:
- S1: touch .gitignore #创建gitignore隱藏文件
- S2: vim .gitignore #编辑文件,加入指定文件
- #下面是写gitignore文件的内容
我们在使用 Git 进行版本控制的时候,有些文件是无需纳入 Git 管理的,通常都是些自动 生成的文件,像日志或者编译过程中创建的文件。我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件来解决这个问题。
来看一个简单的例子
# cat .gitignore
*.[oa]
*~
第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的,我们用不着跟踪它们的版本。
第二行告诉 Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本。此外,你可能还需要忽略 log,tmp 或者 pid 目录,以及自动生成的文档等等。要养成一开始就设置好 .gitignore 文件的习惯,以免将来误提交这类无用的文件。
文件 .gitignore 的格式规范如下:
所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
可以使用标准的 glob 模式匹配。
匹配模式最后跟反斜杠(/)说明要忽略的是目录。
要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。
星号(*)匹配零个或多个任意字符;
[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);
问号(?)只匹配一个任意字符;
如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。
我们再看一个 .gitignore 文件的例子:
# 忽略所有 .a 结尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
/TODO
# 忽略 build/ 目录下的所有文件
build/
# 会忽略 doc/notes.txt 但不包括 doc/server/notes.txt
doc/notes.txt
代码提交git标准:忽略xcuserdata下面的所有文件 (xcuserdata/)
在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件)。这个文件每一行保存了一个匹配的规则例如:
1
2
3
4
5
6
7
|
# 此为注释 – 将被 Git 忽略
*.a
# 忽略所有 .a 结尾的文件
!lib.a
# 但 lib.a 除外
/TODO
# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/
# 忽略 build/ 目录下的所有文件
doc/*.txt
# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
|
规则很简单,不做过多解释,但是有时候在项目开发过程中,突然心血来潮想把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
1
2
3
|
git
rm
-r --cached .
git add .
git commit -m
'update .gitignore'
|
|
http://blog.csdn.net/cscmaker/article/details/8553980
http://www.pfeng.org/archives/840
https://segmentfault.com/a/1190000000522997