3 回答

TA貢獻1786條經驗 獲得超13個贊
模式格式
空行不匹配任何文件,因此它可以作為可讀性的分隔符。
以開頭的行
#
作為注釋。一個
!
否定模式的可選前綴; 之前模式排除的任何匹配文件將再次包含在內。如果否定模式匹配,則將覆蓋較低優先級模式源。如果模式以斜杠結尾,則為了以下描述的目的將其刪除,但它只會找到與目錄的匹配項。換句話說,
foo/
將匹配foo
它下面的目錄和路徑,但不匹配常規文件或符號鏈接foo
(這與在git中一般使用pathspec的方式一致)。如果模式不包含斜杠
/
,git會將其視為shell glob模式,并檢查相對于.gitignore
文件位置的路徑名的匹配(相對于工作樹的頂層,如果不是來自.gitignore
文件)。否則,git將模式視為適合使用的shell glob,
fnmatch(3)
并帶有FNM_PATHNAME
標志:模式中的通配符/
與路徑名中的a不匹配。例如,Documentation/*.html
匹配Documentation/git.html
但不是Documentation/ppc/ppc.html
或tools/perf/Documentation/perf.html
。前導斜杠與路徑名的開頭匹配。例如,
/*.c
匹配cat-file.c
但不匹配mozilla-sha1/sha1.c
。
你可以在這里找到更多
git help gitignore
要么man gitignore

TA貢獻1856條經驗 獲得超5個贊
包含斜杠的路徑被認為是相對于包含.gitignore文件的目錄 - 通常是存儲庫的頂層,但您也可以將它們放在子目錄中。
所以,因為在你提供的所有例子中,路徑都包含斜杠,兩個版本是相同的。只有在路徑中沒有一個時,才需要設置一個前導斜杠。例如,要僅在存儲庫的頂級忽略foo,請使用/foo
。簡單地寫入foo
會忽略存儲庫中任何名為foo的內容。
你的通配符也是多余的。如果要忽略整個目錄,只需將其命名為:
lib/model/om
使用通配符的唯一原因是,如果您打算隨后忽略目錄中的某些內容:
lib/model/om/* # ignore everything in the directory! lib/model/om/foo # except foo
- 3 回答
- 0 關注
- 1349 瀏覽
添加回答
舉報