2017-01-19 26 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未排除将不会在以后工作。