.gitignore用于特定深度的目录?

时间:2016-11-07 09:32:30

标签: git version-control gitignore

我有components/root/js/components/example/js/的目录,我不希望Git跟踪这些目录。

但是,我有一个目录components/root/js2/plugins/js/,我希望由Git跟踪。

我在网上查了一下,发现只有**,我认为这并不能解决我的问题。

我当前的.gitconfig包含以下行:

js/

我尝试将其更改为:

components/**/js/

但这匹配components/root/js/components/example/js/,还有components/root/js2/plugins/js/(第js级以下的components文件夹 - 我只想忽略第二级js个文件夹。)

我如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

好的,这个怎么样:

js/
!components/root/js2/plugins/js/

js之后指定的目录外,它将忽略所有名为!的目录。在这种情况下,git会忽略components/root/js/,但不会忽略components/root/js2/plugins/js/

**无效,因为正如man gitignore中所述:

  

尾随“**”匹配内部的一切。例如,“abc / **”   匹配目录“abc”内的所有文件,相对于位置   .gitignore文件,具有无限深度。

答案 1 :(得分:1)

如果目录稍后移动,您可以将.gitigore个文件放在任何目录中,这将是一个更可靠的解决方案。

我会创建2个.gitignore个文件:

  • 项目根目录/.gitignore的一个排除了js

    JS

  • plugins目录/components/root/js2/plugins/.gitignore中的一个覆盖根.gitignore

    !JS

如果稍后将移动plugins目录,例如到components/root/plugins .gitignore也会被移动。

如果您在根.gitignore中配置所有内容,则在移动目录时,不要忘记编辑根.gitignore