Git 将内容文件夹索引到排除父文件夹中

Git 将内容文件夹索引到排除父文件夹中,git,gitignore,Git,Gitignore,我有一个全局父文件夹/文件 我需要排除他的内容,所以我写了一行: files/* !files/normal/* 进入。git忽略 但是有一个文件夹是“普通”(当然是文件夹/文件内容)的,我不想排除它 我尝试添加一行: files/* !files/normal/* 但它不起作用 我该怎么做?谢谢你的帮助 .gitignore文件: vendor files !files/normal # not work .htaccess .htpasswd 结构: └───of

我有一个全局父文件夹/文件

我需要排除他的内容,所以我写了一行:

files/*
!files/normal/*
进入。git忽略

但是有一个文件夹是“普通”(当然是文件夹/文件内容)的,我不想排除它

我尝试添加一行:

files/*
!files/normal/*
但它不起作用

我该怎么做?谢谢你的帮助

.gitignore文件:

vendor
files
!files/normal          # not work
.htaccess
.htpasswd
结构:

└───offres
    ├───normal
    └───unique
git状态为空(仅为.gitignore)


直到最近,对一个目录的忽略总是不可逆地忽略它的所有内容——因为忽略一个目录就意味着不去看它,它的内容永远不会与任何(其他)规则相匹配。现在,当您豁免一个路径时,出于忽略文件中规则的目的,它的父目录也被豁免,但是看起来您的git版本并不是那么新

files/*
忽略
文件
中的所有内容,包括目录
文件/normal
。因此,
files/normal
作为一个被忽略的目录,
files/normal
中的任何内容都没有经过测试——所有
files/normal/anything
规则根本就没有机会

当工作树不太庞大时,通常的通用修复方法是只添加

!*/
在.gitignore的底部,它表示“无论上面说什么,永远不要完全忽略目录”,并用
/**
替换尾随的
/**
,以将显式通配符忽略匹配扩展到新未忽略的深度。这不是默认设置,因为有时候工作树真的是很深的沼泽,对它们进行无用的扫描会产生持久的、恼人的减速带

要修复此特定问题,请使用

files/*
!files/normal
(或者等效地,在.gitignore的底部,只需将

!*/
然后,明确列出所有您确实希望概要和完全忽略的目录)

尝试以下方法:

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.

如果不将
/*
与目录
文件一起放置,则取消排除稍后将不起作用

“它不起作用”是什么意思?这意味着“普通”文件夹的内容仍然被忽略尝试从两个规则中删除
/*
。文件仍然忽略尝试将包含放在排除之前。感谢您的解释,但似乎我什么都不懂,因为我尝试的每个示例都失败了。.giti忽略我的案例的内容应该是什么?