參考文章:
一般我們總會有些文件無需納入 Git 的管理,也不希望它們總出現(xiàn)在未跟蹤文件列表。通常都是些自動生成的文件,比如日志文件,或者編譯過程中創(chuàng)建的臨時文件等。我們可以創(chuàng)建一個名為 .gitignore 的文件,列出要忽略的文件模式。來看一個實際的例子:
$ cat .gitignore
*.[oa]
*~
第一行告訴 Git 忽略所有以 .o 或 .a 結(jié)尾的文件。一般這類對象文件和存檔文件都是編譯過程中出現(xiàn)的,我們用不著跟蹤它們的版本。第二行告訴 Git 忽略所有以波浪符(~)結(jié)尾的文件,許多文本編輯軟件(比如 Emacs)都用這樣的文件名保存副本。此外,你可能還需要忽略 log,tmp 或者 pid 目錄,以及自動生成的文檔等等。要養(yǎng)成一開始就設(shè)置好 .gitignore 文件的習(xí)慣,以免將來誤提交這類無用的文件。
文件 .gitignore 的格式規(guī)范如下:
- 所有空行或者以注釋符號 # 開頭的行都會被 Git 忽略。
- 可以使用標(biāo)準(zhǔn)的 glob 模式匹配。
- 匹配模式最后跟反斜杠(/)說明要忽略的是目錄。
- 要忽略指定模式以外的文件或目錄,可以在模式前加上驚嘆號(!)取反。
所謂的 glob 模式是指 shell 所使用的簡化了的正則表達(dá)式。星號(*)匹配零個或多個任意字符;[abc] 匹配任何一個列在方括號中的字符(這個例子要么匹配一個 a,要么匹配一個 b,要么匹配一個 c);問號(?)只匹配一個任意字符;如果在方括號中使用短劃線分隔兩個字符,表示所有在這兩個字符范圍內(nèi)的都可以匹配(比如 [0-9]表示匹配所有 0 到 9 的數(shù)字)。
我們再看一個 .gitignore 文件的例子:
# 此為注釋 – 將被 Git 忽略
# 忽略所有 .a 結(jié)尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO
/TODO
# 忽略 build/ 目錄下的所有文件
build/
# 會忽略 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é)會?那開啟抄作業(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/