gitignore忽略二级目录中除config.xml文件外的所有文件



我在谷歌上搜索了一下,但很难找到合适的解决方案。如果我有以下文件,如何忽略除这三个文件之外的所有文件?

  1. package-01/config.xml
  2. package-02/config.xml
  3. package-03/config.xml
./
|-- .git/
|-- .gitignore
|-- README.md
|-- config.xml
|-- configuration
|-- package-01/
|   |-- settings/
|   |   |-- id
|   |   `-- links
|   |-- config.xml
|   `-- other_files
|-- package-02/
|   |-- settings/
|   |   |-- id
|   |   `-- links
|   |-- config.xml
|   `-- other_files
|-- package-03/
|   |-- settings/
|   |   |-- id
|   |   `-- links
|   |-- external_packages/
|   |   |-- 1/
|   |   |   |-- settings.xml
|   |   |   |-- config.xml
|   |   |   `-- id
|   |   |-- 2/
|   |   |   |-- settings.xml
|   |   |   |-- config.xml
|   |   |   `-- id
|   |-- config.xml
|   `-- other_files

我试过了,但失败了。

*
!.gitignore
!README.md
!/**/*.xml
!**/*.xml
!**.xml
!/*/*.xml
!*/*.xml

排除包含config.xml的目录,然后忽略它们的所有内容,但排除每个config.xml

/*
!.gitignore
!README.md
!/package-01
/package-01/**
!/package-01/config.xml
!/package-02
/package-02/**
!/package-02/config.xml
!/package-03
/package-03/**
!/package-03/config.xml

正如ElpieKay在评论中提到的那样,你的方法确实存在问题:

如果文件的父目录被排除,则无法重新包含该文件。

(请参阅https://git-scm.com/docs/gitignore)

最新更新