.gitignore 忽略特殊文件
有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示Untracked files ...,有强迫症的童鞋心里肯定不爽。
好在Git考虑到了大家的感受,这个问题解决起来也很简单,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:
https://github.com/github/gitignore
忽略文件的原则是:
- 忽略操作系统自动生成的文件,比如缩略图等;
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
- 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
====================================
以上都是废话哈--下面进入正题
.gitignore 配置文件用于配置不需要加入版本管理的文件,配置好该文件可以为我们的版本管理带来很大的便利,以下是个人对于配置 .gitignore 的一些心得。
1、配置语法:
以斜杠“/”开头表示目录;
以星号“**”通配多个字符;
以问号“?”通配单个字符
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;
2、示例:
(1)规则:
fd1/* 说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;
(2)规则:
/fd1/* 说明:忽略根目录下的 /fd1/ 目录的全部内容;
(3)规则:
/*!.gitignore!/fw/bin/!/fw/sf/
说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录;
主要我要说一下根目录:
**就是.git所在的目录就是根目录或者说Git工作目录就是根目录
比如说:我要忽略xcworkspace工程以及SDKDemo文件夹下面的所有内容,
我的gitignore的写法如下:
/XxxSDKDemo/*
忽略根目录下的 /XxxSDKDemo/ 目录的全部内容
/XxxxxSDKDemo.xcworkspace
忽略根目录下的 XxxxxSDKDemo.xcworkspace
参考资料:
http://blog.csdn.net/benkaoya/article/details/7932370
http://www.cnblogs.com/haiq/archive/2012/12/26/2833746.html
http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects
https://github.com/github/gitignore/blob/master/Objective-C.gitignore
另外的问题:
Should I git ignore xcodeproject/project.pbxproj file?
This file holds the list of all the files in the project, settings of targets and which files belong to which targets. It's probably the meatiest file in project bundle. Youshould not ignore this file. There are few points for this:
- You may not want to work on this project alone or;
- You're planning on working on project from different machines;
- You'll want to share your code base with others;