我有一个与此类似的目录结构:
root/
.gitignore
subdir/
.gitignore
subsubdir1/
file.xml
image.png
subsubdir2
file.xml
image.jpg
我想忽略来自subdir
的所有文件,但XML文件除外。
第二个.gitignore
看起来像这样:
* # ignore everything in this directory and its subdirectories
!*/ # do not ignore subdirectories
!*.xml # do not ignore xml files
!.gitignore # and of course have this .gitignore file included too
根据this以及SO和其他网站上的各种其他帖子,这应该可以正常工作,但出于某种原因git status
向我显示subdir
文件夹中的所有文件都是未跟踪。
我已经使用git rm --cached
删除了在添加.gitignore
之前已跟踪的所有文件,但仍然无法解决问题。
你有什么线索,会解决这个问题吗?
P.S .: 如果它很重要我在Windows上使用git。
答案 0 :(得分:2)
.gitignore不支持内联评论。评论需要从他们自己的行开始。
您需要删除!* /这将最终撤消它之前的行。
如果你想忽略subdir中的所有内容而不是sububdir中的所有内容,那么该行应该是:
!/*
如果你想忽略像subdir / subsubdir2 / image.jpg这样的文件,你就可以把它留下来。
空目录(或忽略其中所有文件的位置)将不会添加到git中。
我认为(并在我的linux系统上确认).gitignore会被自动排除,因此您可以省略最后一行。
这将留在subdir / .gitignore:
*
!*.xml