.gitignore 中的感叹号不起作用

mrj*_*om2 24 git gitignore

我有这个文件结构

\n
aaafolder\n\xe2\x94\x94\xe2\x94\x80 bbbfolder\n   \xe2\x94\x9c\xe2\x94\x80 filename0.txt\n   \xe2\x94\x9c\xe2\x94\x80 dddfolder\n   \xe2\x94\x82  \xe2\x94\x9c\xe2\x94\x80 filename1.txt\n   \xe2\x94\x82  \xe2\x94\x94\xe2\x94\x80 filename2.txt\n   \xe2\x94\x9c\xe2\x94\x80 cccfolder\n   \xe2\x94\x94\xe2\x94\x80 filename.txt\n
Run Code Online (Sandbox Code Playgroud)\n

aaafolder我希望隐藏该文件夹的所有内容,但该dddfolder文件夹中的所有文件都必须存在。

\n

所以在存储库中,我想进入 Git:

\n
aaafolder\n\xe2\x94\x94\xe2\x94\x80 bbbfolder\n   \xe2\x94\x94\xe2\x94\x80 dddfolder\n      \xe2\x94\x9c\xe2\x94\x80 filename1.txt\n      \xe2\x94\x94\xe2\x94\x80 filename2.txt\n
Run Code Online (Sandbox Code Playgroud)\n

我的.gitignore看起来像这样:

\n
/source/aaafolder/**\n!/source/aaafolder/bbbfolder/dddfolder/*\n
Run Code Online (Sandbox Code Playgroud)\n

但是,整个aaafolder文件夹将被忽略

\n

Edw*_*son 38

根据文档gitignore,否定时

如果排除该文件的父目录,则无法重新包含该文件。

这意味着您需要确保包含 的父级即使不包含的内容。dddfolderdddfolder

换句话说,你不能使用**来进行贪婪匹配。您需要使用单级通配符。您需要排除导致的文件夹dddfolder,然后包含其内容。

aaafolder/*
!aaafolder/bbbfolder
aaafolder/bbbfolder/*
!aaafolder/bbbfolder/dddfolder
Run Code Online (Sandbox Code Playgroud)


Ant*_*rka 5

试试这样:

aaafolder/*
!aaafolder/bbbfolder/*
Run Code Online (Sandbox Code Playgroud)