天天看點

GIT 忽略檔案.gitignore

GIT 忽略檔案.gitignore

一般我們總會有些檔案無需納入 Git 的管理,也不希望它們總出現在未跟蹤檔案清單。通常都是些自動生成的文

件,比如日志檔案,或者編譯過程中建立的臨時檔案等。在這種情況下,我們可以建立一個名為

.gitignore

的檔案,列出要忽略的檔案模式。來看一個實際的例子:

$ cat .gitignore
*.[oa]
*~
           

第一行告訴 Git 忽略所有以 .o 或 .a 結尾的檔案。一般這類對象檔案和存檔檔案都是編譯過程中出現的。第二行

告訴 Git 忽略所有以波浪符(~)結尾的檔案,許多文本編輯軟體(比如 Emacs)都用這樣的檔案名儲存副本。

此外,你可能還需要忽略 log,tmp 或者 pid 目錄,以及自動生成的文檔等等。要養成一開始就設定好

.gitignore

檔案的習慣,以免将來誤送出這類無用的檔案。

檔案

.gitignore

的格式規範如下:

  • 所有空行或者以 # 開頭的行都會被 Git 忽略。
  • 可以使用标準的 glob 模式比對。
  • 比對模式可以以(/)開頭防止遞歸。
  • 比對模式可以以(/)結尾指定目錄。
  • 要忽略指定模式以外的檔案或目錄,可以在模式前加上驚歎号(!)取反。

所謂的 glob 模式是指 shell 所使用的簡化了的正規表達式。星号(

*

)比對零個或多個任意字元;

[abc]

比對任

何一個列在方括号中的字元(這個例子要麼比對一個 a,要麼比對一個 b,要麼比對一個 c);問号(

?

)隻比對

一個任意字元;如果在方括号中使用短劃線分隔兩個字元,表示所有在這兩個字元範圍内的都可以比對(比如

[0-9]

表示比對所有 0 到 9 的數字)。使用兩個星号(

*

) 表示比對任意中間目錄,比如

az

可以比對

a/z

,

a/b/z

a/b/c/z

等。

我們再看一個

.gitignore

檔案的例子:

# 忽略.a結尾的檔案
*.a
# 除了lib.a以外的檔案,加上上一條。意思是忽略.a結尾的檔案,但是lib.a除外
!lib.a
# 隻忽略TODO目前目錄下的檔案,子目錄除外
/TODO
# 忽略 build 目錄下的所有檔案, 包括子目錄
build/
# 忽略doc下的txt檔案,但是不包括子目錄
doc/*.txt
# 忽略doc下的txt檔案,包括子目錄,以及子子目錄(遞歸)
doc/**/*.pdf
           

***以上内容摘自progit書籍