在文件夾中,常常會有些「其餘」文件,好比上節課最後提到的,編輯器產生~結尾的備份文件,或者一些臨時文件。又可能,某些文件咱們只是在本地使用,並不想提交到遠程的倉庫中被別人看到。但若是咱們不跟蹤這些文件,Git會一直很執着地提醒咱們工做目錄中有一些未被跟蹤的文件。若是你想清淨一點,就能夠經過.gitignore文件忽略你不想看到的文件。git
要感覺一下忽略文件的效果,首先你得有打算忽略的文件,因此咱們強行建立一個叫作readme.txt.tmp的文件,假設它是readme.txt產生的臨時文件。web
git status 看一下效果,同上節課中同樣,在untracked files裏列出了這個文件:正則表達式
# On branch mastershell
# Untracked files:編輯器
# (use "git add <file>..." to include in what will be committed)ui
#spa
# readme.txt.tmporm
nothing added to commit but untracked files present (use "git add" to track)server
而後咱們在工做目錄中新建一個.gitignore文件,在裏面寫上一行:開發
*tmp
保存退出,再運行 git status:
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# .gitignore
nothing added to commit but untracked files present (use "git add" to track)
readme.txt.tmp文件消失了,untracked files裏只剩下剛建立的.gitignore文件。
來看一下《Pro Git》裏對.gitignore格式規範的解釋:
全部空行或者以註釋符號 # 開頭的行都會被 Git 忽略。
可使用標準的 glob 模式匹配。
匹配模式最後跟反斜槓(/)說明要忽略的是目錄。
要忽略指定模式之外的文件或目錄,能夠在模式前加上驚歎號(!)取反。
所謂的 glob 模式是指 shell 所使用的簡化了的正則表達式:
星號(*)匹配零個或多個任意字符;
[abc] 匹配任何一個列在方括號中的字符(這個例子要麼匹配一個 a,要麼匹配一個 b,要麼匹配一個 c);
問號(?)只匹配一個任意字符;
若是在方括號中使用短劃線分隔兩個字符,表示全部在這兩個字符範圍內的均可以匹配(好比 [0-9] 表示匹配全部 0 到 9 的數字)。
因此咱們前面寫的 *tmp,就是指忽略全部以tmp結尾的文件。
再來看一個 .gitignore 文件的例子:
# 此爲註釋 – 將被 Git 忽略
# 忽略全部 .a 結尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 僅僅忽略項目根目錄下的 TODO 文件
# 不包括 subdir/TODO
/TODO
# 忽略 build/ 目錄下的全部文件
build/
# 忽略 doc 目錄下的全部 .txt 文件
# 會忽略 doc/notes.txt
# 但不包括 doc/server/arch.txt
doc/*.txt
固然,你也能夠把.gitignore文件自己從git中忽略。但我不建議這麼作,而是全部協做開發者使用統一的規範,避免有人由於沒寫.gitignore而提交上去一些奇怪的文件。
在項目一開始就把.gitignore設置好,不只是爲了好看,也是避免沒必要要的文件對代碼產生干擾。好比有些須要本地生成的文件,若是放在遠程倉庫中被其餘人下載使用,也可能會致使程序沒法正常運行。