2016-12-09 50 views
1
-public/ 
--dist/ 
----external/ 
------external-resource.js 
----main.js 
----main.css 
----favicon.ico 

我有這樣的目錄結構,並在我的.gitignore我有這些項:的.gitignore無法正常白名單特定文件

public/dist/ 
!public/dist/favicon.ico 
!public/dist/external/ 

我希望混帳忽略整個公共/距離/目錄但白名單favicon.ico和整個外部/目錄。

我使用WebStorm,它爲gitignored爲灰色的項目着色。它突出了favicon.ico和external /目錄,使它看起來像被排除在gitignore之外,但git沒有看到這些文件。

如果我嘗試發出命令:

git add public/dist/favicon.ico 

它破口大罵說,該文件將被忽略,我不得不迫使它添加。

這是怎麼發生的?我讀過的一切使它看起來像我gitignore是正確的(甚至WebStorm)

我使用Git的版本是:1.9.5.mysysgit.1

回答

3

這是按預期工作。從gitignore手冊頁:

如果排除該文件的父目錄,則不可能重新包含文件。

你反而會需要寫這樣一個規則:

public/dist/* 
!public/dist/favicon.ico 

這裏後*表示的區別 - 你不忽略dist目錄本身BT,而忽略了它的一切,這是不同的。然後你可以有選擇地重新包含一個單獨的文件。

+0

這樣做!我想知道爲什麼WebStorm讓我相信它是正確的。必須是他們的gitignore解析器中的一個疏忽。 – Nick