Git----忽略特殊文件


  有些時候,必須把某些文件放到Git工作目錄中,但又不能提交它們,比如保存了數據庫密碼的配置文件等,每次git status都會顯示Untracked files ...

解決這個問題也很簡單,在Git工作區的根目錄下創建一個特殊的.gitignore文件,然后把要忽略的文件名填進去,Git就會自動忽略這些文件。

.gitignore文件不需要從頭寫,GitHub已經為我們准備了各種配置文件,只需要組合一下就可以使用了。所有配置文件可以直接在線瀏覽:<https://github.com/github/gitignore>;

 

忽略文件的原則是:

  1. 忽略操作系統自動生成的文件,比如縮略圖等;
  2. 忽略編譯生成的中間文件、可執行文件等,也就是如果一個文件是通過另一個文件自動生成的,那自動生成的文件就沒必要放進版本庫,比如Java編譯產生的.class文件;
  3. 忽略你自己的帶有敏感信息的配置文件,比如存放口令的配置文件

舉個例子:

假設你在Windows下進行Python開發,Windows會自動在有圖片的目錄下生成隱藏的縮略圖文件,如果有自定義目錄,目錄下就會有Desktop.ini文件,因此你需要忽略Windows自動生成的垃圾文件:

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini

然后,繼續忽略Python編譯產生的.pyc.pyodist等文件或目錄:

# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build

加上自己定義的文件,最終得到一個完整的.gitignore文件,內容如下:

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini

# Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build

# My configurations:
db.ini
deploy_key_rsa

最后一步就是將.gitignore也提交到Git,就完成了!當然檢驗.gitignore的標准是git status命令是不是說working directory clean

.gitignore忽略規則的優先級

在 .gitignore 文件中,每一行的忽略規則的語法如下:
1)空格不匹配任意文件,可作為分隔符,可用反斜杠轉義
2)以“#”開頭的行都會被 Git 忽略。即#開頭的文件標識注釋,可以使用反斜杠進行轉義。
3)可以使用標准的glob模式匹配。所謂的glob模式是指shell所使用的簡化了的正則表達式。
4)以斜杠"/"開頭表示目錄;"/"結束的模式只匹配文件夾以及在該文件夾路徑下的內容,但是不匹配該文件;"/"開始的模式匹配項目跟目錄;如果一個模式不包含斜杠,則它匹配相對於當前 .gitignore 文件路徑的內容,如果該模式不在 .gitignore 文件中,則相對於項目根目錄。
5)以星號"*"通配多個字符,即匹配多個任意字符;使用兩個星號"" 表示匹配任意中間目錄,比如`a//z`可以匹配 a/z, a/b/z 或 a/b/c/z等。
6)以問號"?"通配單個字符,即匹配一個任意字符;
7)以方括號"[]"包含單個字符的匹配列表,即匹配任何一個列在方括號中的字符。比如[abc]表示要么匹配一個a,要么匹配一個b,要么匹配一個c;如果在方括號中使用短划線分隔兩個字符,表示所有在這兩個字符范圍內的都可以匹配。比如[0-9]表示匹配所有0到9的數字,[a-z]表示匹配任意的小寫字母)。
8)以嘆號"!"表示不忽略(跟蹤)匹配到的文件或目錄,即要忽略指定模式以外的文件或目錄,可以在模式前加上驚嘆號(!)取反。需要特別注意的是:如果文件的父目錄已經被前面的規則排除掉了,那么對這個文件用"!"規則是不起作用的。也就是說"!"開頭的模式表示否定,該文件將會再次被包含,如果排除了該文件的父級目錄,則使用"!"也不會再次被包含。可以使用反斜杠進行轉義。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM