gitignore除xml文件之外的所有子目录中的所有文件

时间:2013-04-19 14:03:41

标签: git gitignore

我有一个与此类似的目录结构:

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。

1 个答案:

答案 0 :(得分:2)

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


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

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

!/*

如果你想忽略像subdir / subsubdir2 / image.jpg这样的文件,你就可以把它留下来。

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

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

这将留在subdir / .gitignore:

*
!*.xml