【问题标题】:How do I ignore a certain file type in a certain directory and its sub-directory in Git?如何忽略 Git 中某个目录及其子目录中的某个文件类型?
【发布时间】:2011-11-26 14:02:35
【问题描述】:

如何只忽略一个目录及其子目录中的某种文件类型?

解释我的意思成像以下设置

  • 另一个目录/
    • seeme1.iml
  • 文件夹忽略/
    • ignoreme1.iml
    • seeme3.txt
    • 另一个忽略文件夹/
      • ignoreme2.iml
      • seeme4.txt
  • seeme5.iml

我希望能够做的是告诉 git(使用 .gitignore 文件)忽略 *.iml 但仅在目录 foldtertoignore 下。

我认为这会起作用

foldertoignore/*.iml

但那只发现 ignoreme1.iml 而不是 ignoreme2.iml

我知道如何告诉它忽略 *.iml 特定目录除外。这是相反的。有什么想法吗?

【问题讨论】:

    标签: git


    【解决方案1】:

    你可以试试这个:

    /foldertoignore/**/*.iml
    

    我想它可能会也可能不会取决于您操作系统中的 fnmatch 实现。替代方案是:

    *.iml
    !/anotherdir/*.iml
    !/*.iml
    

    【讨论】:

    • 在 Windows 上使用 msysgit,'**' 似乎不会被递归应用(如在stackoverflow.com/questions/971465/…stackoverflow.com/questions/991801/… 中已经看到的,并在此处详细解释:stackoverflow.com/questions/2899875/…
    • @Vonc - 我不是说这可能行不通吗?而且我不认为 OP 提到了 msysgit?
    • 是的,不,你没有;)我的评论绝不是批评,只是我在 Windows 上使用 msysgit 观察到的事实,也是我将您的答案与其他人联系起来的一种方式其中讨论了类似的问题(与fnname 相关)。顺便说一句,我没有否决你的答案(但我赞成 knittl's,我发现它更适合这种情况且更可靠)。
    • @Vonc - 是的,knittl 的回答是合适的,但我喜欢从 repo 的根目录管理一个 gitignore。因此,如果** 适用于 OP,我会说去吧。否则,去找 knittl 的答案
    • “我喜欢从 repo 的根目录管理一个 gitignore”:我完全同意。但不幸的是,我从来没有在 Windows 上做到这一点。如果 OP 不在 Windows 上,他/她应该知道要选择什么答案;)
    【解决方案2】:

    .gitignore 规则从包含目录递归应用。只需创建文件foldertoignore/.gitignore,内容为*.iml

    >>foldertoignore/.gitignore echo '*.iml'
    git add foldertoignore/.gitignore
    git commit -m 'Ignore .iml files in foldertoignore and its subfolders'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2010-11-08
      • 2011-02-02
      • 1970-01-01
      • 2012-01-21
      • 2010-12-19
      相关资源
      最近更新 更多