【Git 第7課】 忽略文件

在文件夾中,常常會有些「其餘」文件,好比上節課最後提到的,編輯器產生~結尾的備份文件,或者一些臨時文件。又可能,某些文件咱們只是在本地使用,並不想提交到遠程的倉庫中被別人看到。但若是咱們不跟蹤這些文件,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設置好,不只是爲了好看,也是避免沒必要要的文件對代碼產生干擾。好比有些須要本地生成的文件,若是放在遠程倉庫中被其餘人下載使用,也可能會致使程序沒法正常運行。

相關文章
相關標籤/搜索