我怎么能.gitignore目录中的所有文件,除了那些以模式开头的文件?

时间:2016-07-04 12:01:00

标签: git gitignore

我有以下目录结构:

project
  modules
    some-company-foo
    different-company-bar
    mycompany-a
    mycompany-b
    mycompany-c 

除了那些 mycompany开头的文件外,我如何忽略模块中的所有文件?

git ignore all except subfolder类似,但使用通配符。我不想在mycompany-...中维护每个.gitignore文件夹的列表。

根据其他答案,我尝试使用以下内容创建modules/.gitignore

/*
# Do not ignore mycompany modules
!/mycompany*

modules根本没有提到project/.gitignore

但这不起作用。例如,

git add /Users/mike/Documents/project/modules/mycompany-faq/questions/somefile.md

失败:

The following paths are ignored by one of your .gitignore files:
modules/mycompany-faq/questions/somefile.md
Use -f if you really want to add them

如何忽略modules中的所有文件,但以mycompany 开头的文件除外?

2 个答案:

答案 0 :(得分:1)

@jonathanwakely添加你自己的答案,我会给你积分!

配置实际上是正确的 - 感谢@jonathanwakely's demo,它在一个新文件夹中工作。

问题是,在项目顶部之上的更高级.gitignore文件忽略了modules目录。

之前我曾查找~/Documents/.gitignore~/.gitignore,但是还有另一个.gitignore名称不同。我能够找到它:

> git check-ignore -v modules/mycompany-faq/questions/ssl-or-https.md

/Users/mike/.gitignore_global:28:modules    modules/mycompany-foo/somefile.md

即,.gitignore_global设置为忽略modules目录。

答案 1 :(得分:-1)

On the .gitignore manual

  

如果是父目录,则无法重新包含文件   文件被排除在外。

所以你需要指定完整路径,比如

!/Users/mike/Documents/project/modules/mycompany*