我不太明白这个
我已经从https://git-scm.com/docs/gitignore
阅读了官方文档可选前缀“!”否定了这种模式;之前模式排除的任何匹配文件将再次包含在内。如果排除该文件的父目录,则无法重新包含文件。出于性能原因,Git不会列出排除的目录,因此无论在何处定义,所包含文件的任何模式都不起作用。在第一个“!”前放一个反斜杠(“\”)对于以文字“!”开头的模式,例如“!important!.txt”。
我有这个gitignore文件
/media/*
!/media/xmlconnect
这究竟是做什么的?我忽略了/media/
中的所有子目录,但我是否对/media/xmlconnect
做了例外(例如,我不对它进行gitignoring吗?)
所以基本上我除了media/xmlconnect
之外还有其他所有东西?
答案 0 :(得分:8)
确切地说,这用于取消忽略在该行之前被忽略的路径。您的示例说明了用例非常好。
除了xmlconnect,你忽略了媒体内的所有内容。
答案 1 :(得分:2)
/media/*
以上忽略了媒体内的所有文件
但是,如果要创建例外并且不想忽略media / xmlconnect,则使用!
。
!/media/xmlconnect
执行git add .
时,只有media / xmlconnect会被添加到git中,所以其他文件不会被添加到媒体中。
编辑:撤销.gitignore中的顺序:
Git applies patterns in .gitignore in order of appearance
,所以如果我们改变订单并且
!/media/xmlconnect
出现在/media/*
之前,它会忽略媒体目录中的所有文件。
您可以查看此issue以了解所提出的解决方案。