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

.gitignore for directories at a specific depth?

我在 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 个文件夹)。

我怎样才能实现这个目标?

好的,这个怎么样:

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

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

** 将不起作用,因为正如 man gitignore 中所说:

A trailing "**" matches everything inside. For example, "abc/**" matches all files inside directory "abc", relative to the location of the .gitignore file, with infinite depth.

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

我会创建 2 .gitignore 个文件:

  • 项目根目录 /.gitignore 中的一个,不包括 js

    js

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

    !js

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

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