【學了就忘】Git操作 — 54.忽略文件介紹

1、忽略文件說明

有些時候,你必須把某些文件放到Git工作目錄中,但又不能提交它們到本地版本庫,通常都是些自動生成的文件、日誌文件、系統緩存文件、編譯過程中創建的臨時文件,或者保存了數據庫密碼的配置文件、人隱私文件等等,每次執行git status命令時,都會顯示Untracked files ...(未被跟蹤),有強迫症的童鞋心裏肯定不爽。

正常來說,這些文件都是不應該被提交到版本庫,倘若一不留神提交到版本庫,要麼泄露機密信息,要麼造成經濟損失,要麼對團隊其他人工作造成不便。

好在Git考慮到了大家的感受,這個問題解決起來也很簡單,在Git工作區的根目錄下創建一個特殊的.gitignore文件,然後把要忽略的文件名填進去,並且把.gitignore文件提交到本地版本庫中。之後Git就會自動忽略這些文件,再運行git status命令時就不對其進行檢測了。

即:"並不是所有的牛奶都叫特侖蘇",在版本控制系統中也有相似的表達,那就是"並不是所有的文件都需要提交到本地版本庫"。

2、忽略文件的原則

  1. 忽略操作系統自動生成的文件,保持項目在不同操作系統中的純粹性和整潔度。

  2. 忽略編譯生成的中間文件、可執行文件等,比如Java編譯產生的.class文件,

    即:忽略工具軟件自動生成的文件,避免因個性化配置而產生的工作障礙。

  3. 忽略自己帶有敏感信息的配置文件,比如存放口令的配置文件。

目標:只提交必要文件,忽略無用文件,儘可能考慮多種情況,不給他人制造麻煩。

3、.gitignore忽略規則

文件 .gitignore 的格式規範如下:

  • 所有空行或者以 # 開頭的行都會被 Git 忽略。
  • 可以使用標準的 glob 模式匹配,它會遞歸地應用在整個工作區中。
  • 匹配模式可以以(/)開頭,防止遞歸。
  • 匹配模式最後跟/說明要忽略的是目錄。
  • 要忽略指定模式以外的文件或目錄,可以在模式前加上歎號(!)取反。

所謂的 glob 模式是指 shell 所使用的簡化了的正則表達式。

  • 以#開頭的行用作註釋。
  • 星號(*)匹配零個或多個任意字符。
  • [abc]匹配任何一個列在方括號中的字符 (這個例子要麼匹配一個 a,要麼匹配一個 b,要麼匹配一個 c);
  • 問號(?)只匹配一個任意字符。
  • 如果在方括號中使用短劃線分隔兩個字符, 表示所有在這兩個字符範圍內的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的數字)。
  • 使用兩個星號(**)表示匹配任意中間目錄,比如 a/**/z 可以匹配 a/za/b/za/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文件的習慣,以免將來誤提交這類無用的文件。

參考:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章