我有以下.gitignore:
# Ignore everything
/*
!/.gitignore
# Readd folders:
#!/mainfolder/ # this works!
!/mainfolder/subfolder/
!/mainfolder/subfolder/*
我想忽略一切,但subfolder/
。添加行!/mainfolder/
有效,因此不再忽略/ mainfolder。但我想只添加subfolder/
以下的内容,subfolder/
的第二行和第三行不起作用。
我在网上发现了几条链接,表明这是正确的方式(例如this one)。那么我做错了什么?!
编辑:我在Windows 10上使用SourceTree的Git 2.17.1。我已经从集成的MINGW64 bash中测试了这些结果。
答案 0 :(得分:2)
您需要先将文件夹列入白名单,然后再将文件列入白名单:
*
!.gitignore
!/mainfolder/
/mainfolder/*
!/mainfolder/subfolder/
!/mainfolder/subfolder/**
对于仍然被忽略的文件,请使用以下方法检查原因:
git check-ignore -v -- path/to/ignored/file
是否有可能扩展关于如何为更深层子文件夹执行此操作的答案?例如。除了'deepsubfolder'(?)之外我怎么会忽略一切:!/ mainfolder / subfolder / deepsubfolde
这类似于“Git - Unignore any folder located anywhere inside repository that recursively allows everything”:
*
!.gitignore
!*/
!**/deepsubfolder/**