簡體   English   中英

如何在.gitignore中指定忽略目錄?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM