[英]How to specify to ignore a directory in .gitignore?
在git倉庫中,如果我想通過將子目錄添加到.gitignore
來忽略子目錄(因此也忽略了子目錄下的所有內容),
mysubdir
mysubdir/
mysubdir/*
? 他們似乎對我也一樣。 謝謝。
“最正確的”將是:
mysubdir/
列表中的第一個( mysubdir
)將忽略該名稱的目錄和文件; 可能不是問題,但有可能。 最后一個僅忽略目錄下的文件,最終結果相同,因為默認情況下,Git中會忽略空目錄。
如果查看GitHub提供的gitignore文件 ,您會發現它們始終按directory/
語法忽略目錄。
有一些區別,但是它們是細微的。
使用方法:
mysubdir
忽略任何名為mysubdir
文件或目錄 。 例如,如果將其放在頂級.gitignore
,則目錄A和B的布局為:
A/
file
mysubdir <-- a file, not a directory!
B/
file
mysubdir/ <-- an actual directory
file
那么此.gitignore
將同時忽略A/mysubdir
(一個文件)和B/mysubdir
(一個目錄)。 通過忽略第二,它切斷所有文件中的 B/mysubdir/
為好。
使用方法:
mysubdir/
僅忽略名為mysubdir
目錄 。 在這種情況下, 不會忽略A/mysubdir
,因為它是一個file 。 但是B/mysubdir
是一個目錄,因此將被忽略。
使用方法:
mysubdir/*
告訴Git它應該忽略mysubdir
所有文件和目錄。 為此, mysubdir
必須是一個目錄(如果不是,則不能包含文件和更多目錄)。 因此,乍一看似乎與mysubdir/
相同。 但這不是!
當使用mysubdir/*
,您迫使Git 讀取目錄本身,以列出其中的所有文件。 然后,它將根據.gitignore
文件中的模式檢查每個文件。 這意味着您可以在.gitignore
文件中添加覆蓋:
!mysubdir/precious
由於開頭,該文件或目錄不會被忽略!
字符。 但是,要讓Git 查找文件,Git必須先讀取目錄 。 如果您列出了mysubdir/
而不是mysubdir/*
,則Git 不會費心讀取目錄 ,也不會發現mysubdir/precious
的存在。
當然,強制Git讀取目錄有一個(輕微)損失:Git必須花費任何時間讀取該目錄。 如果罰買你的東西,如不忽略某些文件或子目錄是該目錄中你應該這樣做而已。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.