.gitignore忽略跟蹤指定檔案

admin發表於2018-07-23

並非所有專案中的檔案都希望被跟蹤提交,例如以下幾種:

(1).存放密碼等比較私密內容的檔案。

(2).程式編譯所產生的中間檔案或暫存檔案。

達成上述目的,只需要在專案根目錄下配置.gitignore檔案,使其忽略跟蹤指定檔案即可。還有另外兩種實現忽略指定檔案的方式,本文只介紹在專案根目錄下新增.gitignore檔案這一種,最為常用。

一.建立.gitignore檔案:

首先要特別注意,檔案的全稱就是.gitignore(一個點+gitignore)。

如果此檔案不存在,可以使用如下命令建立:

[Shell] 純文字檢視 複製程式碼
$ touch .gitignore

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201807/23/002121smy9kmyyz1xqb959.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

二.忽略規則:

(1).檔案中的空行會被忽略,可以用來作為分隔美化格式。

(2).以#開頭的行用作註釋,不會作為忽略規則。

(3).可以有限的採用正規表示式,星號(*)表示任意多個字元,問號(?)表示任意一個字元,方括號[abc]表示其中任意一個字元,大括號({string1,string2,string3})表示其中的任意一個字串。

(4).以斜槓開頭表示根目錄,比如/test.txt表示根目錄下test.txt檔案。

(5).以斜槓結尾,表示一個目錄,a/表示a目錄下所有檔案(無論是否根目錄),/a/表示根目錄下的a目錄中所有檔案。

(6).一歎號(!)開頭表示此類檔案不被忽略。

三.例項分析:

(1).例項一:

[Shell] 純文字檢視 複製程式碼
# 這是註釋
/ant/ # 忽略根目錄下ant目錄下所有檔案
*.txt # 忽略所有的文字檔案
softwhy/do.c #忽略softwhy目錄下所有do.c檔案

上面規則比較簡單不多分析。

(2).例項二:

[Shell] 純文字檢視 複製程式碼
/ant/
!/ant/test.txt

分析如下:

(1).第一行規定忽略根目錄下的ant目錄下的所有檔案。

(2).第二行規定不忽略對應目錄下的test.txt檔案。

如果沒有歎號(!)這個用法,想要實現上述功能,只能挨個忽略ant目錄下除去test.txt之外的檔案。

四.為什麼規則沒有生效:

現在.gitignore檔案的規則內容如下:

[Shell] 純文字檢視 複製程式碼
readme.txt

忽略readme.txt檔案,現在修改readme.txt檔案,然後檢視一下狀態:

a:3:{s:3:\"pic\";s:43:\"portal/201807/23/002329fzihsi8sszyi2thy.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

規則已經規定要忽略readme.txt檔案了,但是為什麼readme.txt依然處於跟蹤狀態。

這是因為忽略readme.txt規則是後來新增的,規則是這樣的:規則只能對尚未被track跟蹤的檔案有效。

只要再將readme.txt設定為未跟蹤狀態即可生效:

[Shell] 純文字檢視 複製程式碼
$ git rm readme.txt --cached

將其從暫存區刪除,這時候檔案處於未跟蹤狀態,這時候Git已經不能跟蹤它:

a:3:{s:3:\"pic\";s:43:\"portal/201807/23/002408kv0hh0inyuzvsnez.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

相關文章