我有一个全局父文件夹/文件
我需要排除他的内容,所以我把这行:
files/*
进入.gitignore。
但是有一个文件夹“正常”(当然是文件夹/文件内容),我不想排除。
我尝试添加这一行:
!files/normal/*
但它不起作用。
我该怎么做?谢谢你的帮助
.gitignore文件:
vendor
files
!files/normal # not work
.htaccess
.htpasswd
结构:
└───offres
├───normal
└───unique
git status为空(只是.gitignore)
modified: ../.gitignore
答案 0 :(得分:0)
直到最近,忽略一个目录并且不可逆转地忽略了它的所有内容 - 因为忽略一个意味着没有查看它的目录,它的内容永远不会与任何(其他)规则匹配。现在当你豁免路径时,它的父目录也被豁免以用于该忽略文件中的规则,但看起来你的git版本不是最近的。
files/*
忽略files
,中的所有内容,包括目录files/normal
。因此,files/normal
是一个被忽略的目录files/normal
中的任何内容都没有经过测试 - 所有files/normal/anything
规则根本就没有机会。
当工作树太庞大时,通常的通用修复方法就是添加
!*/
位于.gitignore的底部,表示"无论上面说的是什么,都不要完全忽略目录"并使用/*
替换尾随/**
以将显式通配符忽略匹配扩展到新未标记的深度。这不是默认值,因为有时候工作树真的很深,而且无用地扫描它们会产生持久的,烦人的速度障碍。
要修复此特定问题,请使用
files/*
!files/normal
(或等效地,在.gitignore的底部,只需输入
!*/
然后在那之后明确列出你真正想要简单地完全忽略的任何目录
答案 1 :(得分: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
放在一起,则取消排除将无法使用。