.gitignore 忽略特殊文件
有些時(shí)候,你必須把某些文件放到Git工作目錄中,但又不能提交它們,比如保存了數(shù)據(jù)庫密碼的配置文件啦,等等,每次git status都會顯示Untracked files ...,有強(qiáng)迫癥的童鞋心里肯定不爽。
好在Git考慮到了大家的感受,這個(gè)問題解決起來也很簡單,在Git工作區(qū)的根目錄下創(chuàng)建一個(gè)特殊的.gitignore文件,然后把要忽略的文件名填進(jìn)去,Git就會自動忽略這些文件。
不需要從頭寫.gitignore文件,GitHub已經(jīng)為我們準(zhǔn)備了各種配置文件,只需要組合一下就可以使用了。所有配置文件可以直接在線瀏覽:
https://github.com/github/gitignore
忽略文件的原則是:
- 忽略操作系統(tǒng)自動生成的文件,比如縮略圖等;
- 忽略編譯生成的中間文件、可執(zhí)行文件等,也就是如果一個(gè)文件是通過另一個(gè)文件自動生成的,那自動生成的文件就沒必要放進(jìn)版本庫,比如Java編譯產(chǎn)生的.class文件;
- 忽略你自己的帶有敏感信息的配置文件,比如存放口令的配置文件。
====================================
以上都是廢話哈--下面進(jìn)入正題
.gitignore 配置文件用于配置不需要加入版本管理的文件,配置好該文件可以為我們的版本管理帶來很大的便利,以下是個(gè)人對于配置 .gitignore 的一些心得。
1、配置語法:
以斜杠“/”開頭表示目錄;
以星號“**”通配多個(gè)字符;
以問號“?”通配單個(gè)字符
以方括號“[]”包含單個(gè)字符的匹配列表;
以嘆號“!”表示不忽略(跟蹤)匹配到的文件或目錄;
此外,git 對于 .ignore 配置文件是按行從上到下進(jìn)行規(guī)則匹配的,意味著如果前面的規(guī)則匹配的范圍更大,則后面的規(guī)則將不會生效;
2、示例:
(1)規(guī)則:
fd1/* 說明:忽略目錄 fd1 下的全部內(nèi)容;注意,不管是根目錄下的 /fd1/ 目錄,還是某個(gè)子目錄 /child/fd1/ 目錄,都會被忽略;
(2)規(guī)則:
/fd1/* 說明:忽略根目錄下的 /fd1/ 目錄的全部內(nèi)容;
(3)規(guī)則:
/*!.gitignore!/fw/bin/!/fw/sf/
說明:忽略全部內(nèi)容,但是不忽略 .gitignore 文件、根目錄下的 /fw/bin/ 和 /fw/sf/ 目錄;
主要我要說一下根目錄:
**就是.git所在的目錄就是根目錄或者說Git工作目錄就是根目錄

比如說:我要忽略xcworkspace工程以及SDKDemo文件夾下面的所有內(nèi)容,
我的gitignore的寫法如下:
/XxxSDKDemo/*
忽略根目錄下的 /XxxSDKDemo/ 目錄的全部內(nèi)容
/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;