Git,忽略文件夹,除了一些具有特定扩展名的文件

时间:2013-07-09 19:48:06

标签: git version-control gitignore

我的git repo中有一个名为 packages 的文件夹,我想忽略该文件夹中的所有内容,但目标扩展名的文件除外。我在我的gitignore中试过这个:

packages/
!packages/**/*.targets

但它没有用。

如何忽略该文件夹而不忽略目标文件?

2 个答案:

答案 0 :(得分:3)

这似乎对我有用(Git 1.8.2.1):

packages/**/*.*
!packages/**/*.targets

我需要*.*部分,否则**匹配0个目录,最后一个单独的*将匹配包内的任何目录,几乎忽略每个目录,并且内部的任何文件

我希望*.*对你来说不是太糟糕,但是没有扩展名的文件非常罕见。

答案 1 :(得分:0)

嗯。我不认为使用直接的.gitignore规则是可能的。

然而,这应该有所帮助:

  • 的.gitignore:

    packages/
    
  • 添加模式文件:

    git add --force -- $(find packages/ -type f -iname '*.targets')
    

甚至可以将添加到预提交钩子中,以便在出现时自动获取新的目标文件。

正确支持带有特殊字符的文件名:

find packages/ -type f -iname '*.targets' -exec git add --force -- {} +