2017-01-19 126 views
0

我有一個全球性的父文件夾/文件索引內容文件夾到排除的父文件夾

我需要排除他的內容,所以我把行:

files/* 

到的.gitignore。

但有一個文件夾「正常」(當然是文件夾/文件內容),我不想排除。

我嘗試添加一行:

!files/normal/* 

但它不工作。

我該怎麼做?感謝您的幫助

的.gitignore文件:

vendor 
files 
!files/normal   # not work 
.htaccess 
.htpasswd 

結構:

└───offres 
    ├───normal 
    └───unique 

git的狀態空(剛剛的.gitignore)

modified: ../.gitignore 
+0

「不起作用」是什麼意思? –

+0

這意味着「正常」文件夾的內容仍然被忽略 – Macbernie

+0

嘗試從兩個規則中刪除'/ *'。 –

回答

0

直到最近,忽略目錄總結並不可逆轉地忽略其所有內容 - 因爲忽略一個目錄意味着不看它,其內容從未與任何(其他)規則匹配。現在,當你免除一個路徑時,其父目錄也被豁免用於該忽略文件中的規則,但它看起來像你的git版本不是最近的。

files/* 

忽略一切files包括目錄files/normal。所以,files/normal是一個被忽略的目錄files/normal甚至沒有任何測試 - 所有files/normal/anything規則根本就沒有機會。

常用的多用途定爲這當worktree是不是太龐大是剛剛加入

!*/ 

在你的.gitignore的底部,它說「不管別說話是算數的上方,永遠不會完全忽略一個目錄「,並用/**代替尾隨/*s以將顯式通配符忽略匹配擴展爲新的未被忽略的深度。這並不是默認設置,因爲有時候工作程序確實是深度惡意軟件,無用地掃描它們可能會產生持久,令人討厭的快速衝擊。

要解決這個特定的一個,使用

files/* 
!files/normal 

(或相當於爲您的底部。gitignore,只是把

!*/ 

並在那之後明確列出你真的想草率,完全忽略任何目錄)

+0

感謝您的解釋,但似乎我根本沒有任何理解,因爲我所嘗試的每一個想法都是失敗的。 .gitignore的內容我應該怎麼做? – Macbernie

0

試試這個:

files/*    # excludes everything under dir `files`. Note that "/*" allows you to un-exclude a subfolder inside dir `files`  
!files/normal/  # un-excludes dir `files/normal` and (implicitly) everything under it. 

如果你不把/*目錄files未排除將不會在以後工作。