【问题标题】:Exceptions in .gitignore [duplicate].gitignore 中的异常 [重复]
【发布时间】:2011-01-25 19:56:00
【问题描述】:

如何向 .gitignore 添加例外,例如“忽略所有 .dll 文件 BUT myfile.dll”?

【问题讨论】:

    标签: git gitignore


    【解决方案1】:

    使用! 否定模式:

    *.dll
    !myfile.dll
    

    【讨论】:

      【解决方案2】:

      您也可以忽略

      文件夹
      !src/main/resources/archetype-resources/**/*

      您也可以忽略带有模式的嵌套文件夹,例如

      !**/src/test/resources/**/*

      如需快速创建 .gitignore 文件,请尝试gitignore.io

      【讨论】:

        【解决方案3】:

        如果你想忽略整个文件夹,除了一些特定的文件,那么写:

        MyFolder/*
        !MyFolder/CoolFile.txt
        

        不会工作:

        MyFolder/
        !MyFolder/CoolFile.txt
        

        【讨论】:

        • 请注意,这也扩展到子目录。例如,这将起作用:MyFolder/sub/* !MyFolder/sub/file.txt 但这不会:MyFolder/* !MyFolder/sub/file.txt
        • 原因 - " 如果该文件的父目录被排除,则无法重新包含该文件。出于性能原因,Git 不会列出排除的目录,因此包含文件的任何模式都有没有效果,无论它们在哪里定义。" [git-scm.com/docs/gitignore]
        • 所以“出于性能原因”我必须手动输入 21 个不同的同名子文件夹,并且之前被一行忽略,这样我就可以排除一个文件。 ?
        【解决方案4】:

        您可以让多个.gitignore 文件以分层方式协同工作以实现您的目标。 在根级别,您可能有:

        *.dll
        

        在具有myfile.dll 的文件夹中,您可以添加另一个.gitignore 文件,如下所示:

        root/lib/folderwithMyFiledll

        !myfile.dll
        

        更多信息here

        可选前缀“!”这否定了模式;任何被先前模式排除的匹配文件都将再次包含在内。在第一个“!”前面放一个反斜杠(“\”)对于以文字“!”开头的模式,例如,“!important!.txt”。如果满足某些条件,则排除该文件的父目录,则可以重新包含该文件。有关详细信息,请参阅注释部分。

        【讨论】:

        • 您粘贴的文档 sn-p 似乎已过时。该网站目前声明您不能在父目录下重新包含文件。
        【解决方案5】:

        我这样做是因为我有一个名为 /modules 的文件夹,我想忽略它,/modules/custom 文件夹中的所有内容除外。这对我有用。现在我的自定义模块将同步到 GitHub。

        /modules/*
        !/modules/custom/
        

        【讨论】:

        • 这是唯一对我有用的方法。
        • 天哪,谢谢你,这正是我想要做的,令人惊讶的是我必须筛选多少垃圾答案才能找到这个。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-25
        • 2018-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多