Git忽略了bug?

时间:2014-04-25 09:18:05

标签: git gitignore

但这真的很奇怪我只是根据我在这里阅读Gitignore Docs

的内容打字

这是我最奇怪的解决方案:

#ignore everything
*
#except
!.gitignore
!directory**/**

实际上这确实有效!使用git status

可以查看我真正想要的所有子文件夹

注意:我没有在文档中看到这个,或者我被混淆蒙蔽了,并没有在文档中看到它

有没有人可以让我理解为什么这有效?我真的很想学习git。

编辑:与lanzz相同的解决方案

#ignore everything
*
#except
!demo
!demo/**

修改 谢谢, 大卫

1 个答案:

答案 0 :(得分:1)

对我来说,这似乎是一个模糊的git错误 - !directory**/**是根据手册对连续星号的无效使用,但它没有声明如何这样的无效处理规则。

正确的规则应该是:

*
!directory/
!directory/**

原因是*匹配所有文件而不管它们在中的目录(因为它不包含斜杠),因此!directory/只允许目录本身,但不是其内容 - 您需要添加!directory/**以匹配它们。仅使用!directory/**而不使用!directory/将无效,因为!directory/**directory本身不匹配,并且仍会被忽略。

已修改 !directory/优先于!directory(没有尾部斜杠),因为!directory也会匹配名为directory的文件和目录更深入的目录树;这不会影响您的情况,但可能是更复杂的.gitignore规则集中的问题。