【问题标题】:.gitignore for directories at a specific depth?.gitignore 用于特定深度的目录?
【发布时间】:2017-03-20 14:23:12
【问题描述】:

我在 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
  • @ArkadiuszDrabczyk 是的 - 基本上,我不想同步 components/root/js,但我想同步 components/root/js2,我还想同步 components/root/js2/plugins/js,如果这有意义的话。我还希望这适用于两者之间的任何其他目录名称,例如components/abcd/js2/plugins/js
  • 嗯,我不确定我是否遵循 - 如果您将 components/root/js/components/example/js/ 添加到您的 .gitignore 中,是什么阻止了 git 跟踪 components/root/js2/ 中的文件?它不是被忽略目录的子目录。
  • @ArkadiuszDrabczyk 它不跟踪components/root/js2/plugins/js/,因为该目录也称为js。不过,我希望它跟踪这一点 - 不应跟踪仅比 components 低两级的 js 目录。
  • 你不能简单地添加components/root/js/components/example/js吗?你能告诉我们你现在的.gitconfig吗?

标签: git version-control gitignore


【解决方案1】:

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

我会创建 2 个.gitignore 文件:

  • 项目根目录/.gitignore 不包括js

    js

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

    !js

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

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

【讨论】:

    【解决方案2】:

    好的,这个怎么样:

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

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

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

    结尾的“**”匹配里面的所有内容。例如,“abc/**” 匹配目录“abc”中的所有文件,相对于 .gitignore 文件,具有无限深度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      • 2021-12-13
      • 1970-01-01
      • 2018-02-19
      • 2022-06-23
      • 2014-05-25
      • 2019-03-20
      相关资源
      最近更新 更多