我有这样的文件结构
aaafolder
└─ bbbfolder
├─ filename0.txt
├─ dddfolder
│ ├─ filename1.txt
│ └─ filename2.txt
├─ cccfolder
└─ filename.txt
我想隐藏aaafolder
文件夹中的所有内容,但dddfolder
文件夹中的所有文件必须存在。
在存储库中,我想在Git中得到这个:
aaafolder
└─ bbbfolder
└─ dddfolder
├─ filename1.txt
└─ filename2.txt
我的.gitignore
是这样的:
/source/aaafolder/**
!/source/aaafolder/bbbfolder/dddfolder/*
但是,忽略整个aaafolder
文件夹
根据gitignore
文档,当否定时:
这意味着您需要确保包含如果一个文件的父目录被排除,则不可能重新包含该文件。
dddfolder
的父,即使不包含dddfolder
的内容。
换句话说,您不能使用**
进行贪婪匹配。您需要使用单级通配符。您需要排除dddfolder
之前的文件夹,然后包含它们的内容。
aaafolder/*
!aaafolder/bbbfolder
aaafolder/bbbfolder/*
!aaafolder/bbbfolder/dddfolder
试一下:
aaafolder/*
!aaafolder/bbbfolder/*
您还需要分别取消忽略每个子目录-bbbfolder/
和bbbfolder/dddfolder/
/source/aaafolder/
!/source/aaafolder/bbbfolder/
!/source/aaafolder/bbbfolder/dddfolder/
!/source/aaafolder/bbbfolder/dddfolder/*