.gitignore檔案編寫規則
1、gitignore說明
在使用git
的過程中,一般我們總會有些檔案無需納入git
的管理,也不希望它們總出現在未跟蹤檔案列表,這些檔案通常是日誌檔案、臨時檔案、編譯產生的中間檔案、工具自動生成的檔案等等。
此時我們可以建立一個名為 .gitignore
的檔案,列出要忽略的檔案模式,Git會根據這些模式規則來判斷是否將檔案新增到版本控制中。
注意:在windows下可以建立檔名為.gitignore.
,儲存之後系統會自動重新命名為 .gitignore
格式規範
- 所有空行或者以註釋符號 # 開頭的行都會被 Git 忽略
- 可以使用標準的 glob 模式匹配
- 匹配模式最後跟斜槓(/)說明要忽略的是目錄
- 要忽略指定模式以外的檔案或目錄,可以在模式前加上感嘆號(!)進行取反
2、glob模式
所謂的 glob 模式是指 shell 所使用的簡化了的正則表示式,匹配規則如下:
"*"
:星號匹配零個或多個任意字元
[]
:匹配任何一個列在方括號中的字元,如[ab]匹配a或者匹配b
"?"
:問號匹配一個任意字元
[n-m]
:匹配所有在這兩個字元範圍內的字元,如[0-9]表示匹配所有0到9的數字
3、匹配示例
logs/
:忽略當前路徑下的logs目錄,包含logs下的所有子目錄和檔案
/logs.txt
:忽略根目錄下的logs.txt檔案
*.class
:忽略所有後綴為.class的檔案
!/classes/a.class
tmp/*.txt
:只忽略tmp目錄下的.txt檔案
**/foo
:可以忽略/foo, a/foo, a/b/foo等
4、定義全域性的.gitignore檔案
除了可以在專案中定義.gitignore
檔案外,還可以設定全域性的.gitignore
檔案來管理所有Git專案的行為。
這種方式在不同的專案開發者之間是不共享的,是屬於專案之上Git應用級別的行為。
可以在任意目錄下建立相應的.gitignore
檔案,然後再使用以下命令配置Git
git config --global core.excludesfile ~/.gitignore
5、.gitignore規則不生效
.gitignore
只能忽略那些原來沒有被track的檔案,如果某些檔案已經被納入了版本管理中,則修改.gitignore
是無效的。所以一定要養成在專案開始就建立.gitignore
檔案的習慣。
解決方法就是先把本地快取刪除(改變成未track狀態),然後再提交:
git rm -r --cached . git add . git commit -m "msg"
#java *.class #package file *.war *.ear *.zip *.tar.gz *.rar #maven ignore target/ build/ #eclipse ignore .settings/ .project .classpatch #Intellij idea .idea/ /idea/ *.ipr *.iml *.iws # temp file *.log *.cache *.diff *.patch *.tmp # system ignore .DS_Store Thumbs.dbView Code