8

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

packages/
!packages/**/*.targets

但它不起作用。

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

4

2 回答 2

6

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

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

我需要这个*.*部分,否则**匹配 0 个目录,最后一个单独*的将匹配包内的任何目录,实际上忽略每个目录和里面的任何文件。

我希望这*.*对您来说还不错,但是没有扩展名的文件很少见。

于 2013-07-09T21:12:05.497 回答
0

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

但是,这应该会有所帮助:

  • .gitignore:

    packages/
    
  • 添加模式文件:

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

甚至可以将添加添加到预提交挂钩中,以使其在出现新目标文件时自动获取它们。

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

find packages/ -type f -iname '*.targets' -exec git add --force -- {} +
于 2013-07-09T20:01:55.413 回答