特定深度目录的.gitignore文件?

3
我有两个文件夹在目录下:`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/(一个在components第二层下的js文件夹 - 我只想忽略第二层级别的js文件夹)。
我该如何实现这个目标?

你是否真的是指 components/root/js2/plugins/js 而非 components/root/js/plugins/js - Arkadiusz Drabczyk
@ArkadiuszDrabczyk 是的 - 基本上,我不想同步 components/root/js,但我想同步 components/root/js2,并且我还想同步 components/root/js2/plugins/js,如果这有意义的话。我也希望对于任何其他目录名称同样适用,例如 components/abcd/js2/plugins/js - Lucas
嗯,我不确定我理解了 - 如果您将components/root/js/components/example/js/添加到您的.gitignore中,那么是什么阻止git跟踪components/root/js2/中的文件?它不是被忽略的目录的子目录。 - Arkadiusz Drabczyk
你不能简单地添加 components/root/js/components/example/js 吗?你能给我们展示一下你当前的 .gitconfig 文件吗? - Arkadiusz Drabczyk
@ArkadiuszDrabczyk 大约有20个不同的目录,所以我想知道是否可能有一个动态解决方案。我没有 .gitconfig 文件,你是指 .gitignore 文件吗? - Lucas
显示剩余2条评论
2个回答

1
你可以将.gitignore文件放在任何目录中,如果目录稍后移动,这将是一个更可靠的解决方案。
我会创建2个.gitignore文件:
- 项目根目录下的/.gitignore,排除js ``` js ``` - plugins目录下的/components/root/js2/plugins/.gitignore,覆盖根目录的.gitignore ``` !js ```
如果plugins目录稍后被移动到例如components/root/plugins.gitignore也将被移动。
如果您在根目录的.gitignore中配置了所有内容,则不要忘记在目录移动时编辑根目录的.gitignore

1
好的,这个怎么样:

好的,这个怎么样:

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

它将忽略所有名为js的目录,除非在!之后指定了某些目录。在这种情况下,git将忽略components/root/js/,但不会忽略components/root/js2/plugins/js/**不起作用,因为如man gitignore所述:
结尾的“**”匹配里面的所有内容。例如,“abc / **”匹配相对于.gitignore文件位置的“abc”目录中的所有文件,并具有无限深度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接