『現學現忘』Git基礎 — 19、Git中忽略文件
- 2022 年 4 月 29 日
- 筆記
- 高級測試技能 - Git基礎
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
文件的習慣,以免將來誤提交這類無用的文件。
參考: