參考文章:
一般我們總會(huì)有些文件無需納入 Git 的管理突颊,也不希望它們總出現(xiàn)在未跟蹤文件列表终吼。通常都是些自動(dòng)生成的文件橘茉,比如日志文件胯究,或者編譯過程中創(chuàng)建的臨時(shí)文件等精拟。我們可以創(chuàng)建一個(gè)名為 .gitignore
的文件叫编,列出要忽略的文件模式世曾。來看一個(gè)實(shí)際的例子:
$ cat .gitignore
*.[oa]
*~
第一行告訴 Git 忽略所有以 .o 或 .a 結(jié)尾的文件缨恒。一般這類對(duì)象文件和存檔文件都是編譯過程中出現(xiàn)的,我們用不著跟蹤它們的版本。第二行告訴 Git 忽略所有以波浪符(~)結(jié)尾的文件骗露,許多文本編輯軟件(比如 Emacs)都用這樣的文件名保存副本岭佳。此外,你可能還需要忽略 log椒袍,tmp 或者 pid 目錄驼唱,以及自動(dòng)生成的文檔等等。要養(yǎng)成一開始就設(shè)置好 .gitignore 文件的習(xí)慣驹暑,以免將來誤提交這類無用的文件玫恳。
文件 .gitignore 的格式規(guī)范如下:
- 所有空行或者以注釋符號(hào) # 開頭的行都會(huì)被 Git 忽略。
- 可以使用標(biāo)準(zhǔn)的 glob 模式匹配优俘。
- 匹配模式最后跟反斜杠(/)說明要忽略的是目錄京办。
- 要忽略指定模式以外的文件或目錄,可以在模式前加上驚嘆號(hào)(!)取反帆焕。
所謂的 glob 模式是指 shell 所使用的簡(jiǎn)化了的正則表達(dá)式惭婿。星號(hào)(*
)匹配零個(gè)或多個(gè)任意字符;[abc]
匹配任何一個(gè)列在方括號(hào)中的字符(這個(gè)例子要么匹配一個(gè) a叶雹,要么匹配一個(gè) b财饥,要么匹配一個(gè) c);問號(hào)(?
)只匹配一個(gè)任意字符折晦;如果在方括號(hào)中使用短劃線分隔兩個(gè)字符钥星,表示所有在這兩個(gè)字符范圍內(nèi)的都可以匹配(比如 [0-9]
表示匹配所有 0 到 9 的數(shù)字)。
我們?cè)倏匆粋€(gè) .gitignore
文件的例子:
# 此為注釋 – 將被 Git 忽略
# 忽略所有 .a 結(jié)尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 僅僅忽略項(xiàng)目根目錄下的 TODO 文件满着,不包括 subdir/TODO
/TODO
# 忽略 build/ 目錄下的所有文件
build/
# 會(huì)忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt
# ignore all .txt files in the doc/ directory
doc/**/*.txt
**/
的用法是git 1.8.2之后的特性谦炒。
不想學(xué)?沒學(xué)會(huì)风喇?那開啟抄作業(yè)模式吧……
gitignore/Objective-C.gitignore
摘錄如下:
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
#
# Pods/