忽略.gitignore中的所有内容并添加子文件夹不起作用

时间:2018-06-16 08:51:27

标签: git gitignore

我有以下.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中测试了这些结果。

1 个答案:

答案 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/**