2

我有一个类似这样的目录结构:

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

根据此处以及 SO 和其他网站上的其他各种帖子,这应该可以正常工作,但由于某种原因,git status我发现文件subdir夹中的所有文件都未跟踪。

我曾经git rm --cached删除所有在添加之前跟踪过的文件.gitignore,但这仍然没有奏效。

你有什么线索,有什么办法解决这个问题?

PS:以防万一我在 Windows 上使用 git。

4

1 回答 1

3

.gitignore 不支持内联注释。评论需要从自己的行开始。


您需要删除 !*/ 这将最终撤消它之前的行。

如果您想忽略 subdir 中的所有内容而不是 subsubdirs 中的所有内容,那么该行应该是:

!/*

如果您想忽略 subdir/subsubdir2/image.jpg 之类的文件,那么您可以忽略该行。

空目录(或其中的所有文件都被忽略)不会被添加到 git。

我认为(并在我的 linux 系统上确认) .gitignore 被自动排除,因此您可以省略最后一行。

这将留在 subdir/.gitignore 中:

*
!*.xml
于 2013-04-19T20:33:14.617 回答