1、忽略檔案說明
有些時候,你必須把某些檔案放到Git工作目錄中,但又不能提交它們到本地版本庫,通常都是些自動生成的檔案、日誌檔案、系統快取檔案、編譯過程中建立的臨時檔案,或者儲存了資料庫密碼的配置檔案、人隱私檔案等等,每次執行git status
命令時,都會顯示Untracked files ...(未被跟蹤)
,有強迫症的童鞋心裡肯定不爽。
正常來說,這些檔案都是不應該被提交到版本庫,倘若一不留神提交到版本庫,要麼洩露機密資訊,要麼造成經濟損失,要麼對團隊其他人工作造成不便。
好在Git考慮到了大家的感受,這個問題解決起來也很簡單,在Git工作區的根目錄下建立一個特殊的.gitignore
檔案,然後把要忽略的檔名填進去,並且把.gitignore
檔案提交到本地版本庫中。之後Git就會自動忽略這些檔案,再執行git status
命令時就不對其進行檢測了。
即:"並不是所有的牛奶都叫特侖蘇",在版本控制系統中也有相似的表達,那就是"並不是所有的檔案都需要提交到本地版本庫"。
2、忽略檔案的原則
- 忽略作業系統自動生成的檔案,保持專案在不同作業系統中的純粹性和整潔度。
- 忽略編譯生成的中間檔案、可執行檔案等,比如Java編譯產生的
.class
檔案,
即:忽略工具軟體自動生成的檔案,避免因個性化配置而產生的工作障礙。 - 忽略自己帶有敏感資訊的配置檔案,比如存放口令的配置檔案。
目標:只提交必要檔案,忽略無用檔案,儘可能考慮多種情況,不給他人制造麻煩。
3、.gitignore
忽略規則
檔案 .gitignore
的格式規範如下:
- 所有空行或者以
#
開頭的行都會被 Git 忽略。 - 可以使用標準的
glob
模式匹配,它會遞迴地應用在整個工作區中。 - 匹配模式可以以(
/
)開頭,防止遞迴。 - 匹配模式最後跟
/
說明要忽略的是目錄。 - 要忽略指定模式以外的檔案或目錄,可以在模式前加上歎號(
!
)取反。
所謂的glob
模式是指shell
所使用的簡化了的正規表示式。
- 以#開頭的行用作註釋。
- 星號(
*
)匹配零個或多個任意字元。 [abc]
匹配任何一個列在方括號中的字元 (這個例子要麼匹配一個a
,要麼匹配一個b
,要麼匹配一個c
);- 問號(
?
)只匹配一個任意字元。 - 如果在方括號中使用短劃線分隔兩個字元, 表示所有在這兩個字元範圍內的都可以匹配(比如
[0-9]
表示匹配所有 0 到 9 的數字)。 - 使用兩個星號(
**
)表示匹配任意中間目錄,比如a/**/z
可以匹配a/z
、a/b/z
或a/b/c/z
等。
我們再看一個 .gitignore
檔案的例子:
# 1.忽略public下的所有目錄及檔案
/public/*
# 2.不忽略/public/assets,就是特例的意思,assets檔案不忽略
!/public/assets
# 3.忽略具體的檔案
index.html
# 4.忽略所有的java檔案
*.java
# 5.忽略 a.java b.java
[ab].java
# 6.忽略 doc/ 目錄及其所有子目錄下的 .pdf 檔案
doc/**/*.pdf
# 7.忽略 doc/notes.txt,但不忽略 doc/server/arch.txt
doc/*.txt
# 8.忽略任何目錄下名為 build 的資料夾
build/
# 9.只忽略當前目錄下的 TODO 檔案,而不忽略 subdir/TODO檔案
/TODO
提示:要養成一開始就為你的新倉庫設定好
.gitignore
檔案的習慣,以免將來誤提交這類無用的檔案。
參考: