字數:513
閱讀時間:5分鐘
github官方提供了一個全面的gitignore模板,基本上能滿足我們的需求。
不過有許多庫其實也是使用的相同語法來忽略檔案的,例如eslint。所以我們還是有必要詳細瞭解一下。
規則詳情
gitignore其實就是在glob匹配的基礎上新增了路徑匹配和!
、#
語法。
先上程式碼:
#先忽略當前目錄下所有檔案
/*
!*-ui
dist
forms
libs
dll
複製程式碼
如上所示,每一行配置都是一條獨立的匹配語句,遵循如下規則:
1.#
開始表註釋。
2.!
開始表取消忽略。例,!*-ui
就是重新匹配當前目錄下的以‘-ui’結尾的資料夾。這裡需要注意,如果父級目錄被忽略了,子集目錄是無法取消忽略的。例:
*-ui
!jquery-ui/jquery.js
複製程式碼
是無法重新匹配jquery.js檔案的。正確寫法:
*-ui
!jquery-ui
jquery-ui/*
!!jquery-ui/jquery.js
複製程式碼
3.空行不做任何匹配
4.如果匹配語句中沒有’\‘符號,則視為一個glob匹配。
glob匹配是shell使用的簡化版正規表示式,只使用了正則裡面的*
、?
和[]
語法。例:foo
可以匹配到 ’foo‘、’app/foo‘、’app/food.js‘等。
5.如果表示式中存在''符號,就是路徑匹配語法。例:foo/
只會匹配’foo‘、’app/foo‘,不會匹配’app/food.js‘。而foo/*.js
只會匹配foo資料夾中所有的js檔案
6.以\
開始,表匹配當前目錄。例:/*.js
可以匹配'app.js',但無法匹配'js/app.js'。
7.**
表示匹配零到多級目錄。
例:
**/foo
同foo
。
abc/**
匹配abc本身以及其所有子資料夾、子資料夾的子資料夾(無限深度)和其中檔案。
abc/**/d
匹配’abc/d‘、’abc/e/d‘、’abc/e/f/d‘、’e/abc/f/d‘等。
歡迎關注我的微信公眾號: