【问题标题】:Can I include other .gitignore file in a .gitignore file? (like #include in c-like languages)我可以在 .gitignore 文件中包含其他 .gitignore 文件吗? (就像类 c 语言中的 #include 一样)
【发布时间】:2011-10-23 17:23:52
【问题描述】:

我有一些文件,例如 vim.gitignoreSVN.gitignoreCVS.gitignore(散布在我的硬盘上)。

我可以简单地将这些 gitignore 文件包含在新 Git 项目的 .gitignore 文件中吗?

编辑:我已经有一个全局忽略文件。
我只想忽略不同类型项目中的不同文件,可以吗?

【问题讨论】:

    标签: git gitignore


    【解决方案1】:

    你可以:

    • 拥有一个包含以下内容的模板存储库:
      • 那些xxx.gitignore里面的文件:
      • 一个带有“xxx-gitignore-xxx”的.gitignore文件(换句话说,带有一个内容您可以轻松识别
      • .gitattribute filter driver

    (对于每个新的 repo,您​​都可以克隆它并可以从已经存在的那些文件开始。
    然后你删除远程'origin',或者用你想要推送到的任何远程仓库替换它)


    (图片显示在“Customizing Git - Git Attributes”,来自“Pro Git book”)

    在您的 repo 结帐时,过滤器驱动程序将通过 smudge 脚本:

    • 识别.gitignore文件的内容
    • 检查xxx.gitignore 内容是否已经存在(通过查找只有这些文件具有的特定字符串)
    • 如果它们的内容不存在,它将附加那些 xxx.gitignore 文件的内容
    • 如果内容已经是最新的,则不会修改.gitignore

    请注意,这里有一个可识别的内容,因为filter driver script doesn't have the name/path of the file it filters

    这有点令人费解,但似乎是实现您想要的“包含”功能的唯一方法。

    【讨论】:

    • 属性很好用,没想到,但希望没有。 IMO 不必要的复杂性。
    • @manojlds:“不必要的复杂性”?我同意!但这是一种可能的实现方式......
    • 太复杂了。还有其他想法吗?请
    • 这篇文章包含一个死图链接。这绝对不会变得更容易理解。
    • @mbomb007 我已经恢复了图片链接,还有其他参考资料。
    【解决方案2】:

    我运行了一个托管最多 gitignore 模板的项目,它非常易于使用。

    这不允许任何人包含子模板,但它确实会从单个 git 模板生成一个大模板。

    【讨论】:

    • 这个答案比其他答案来得晚,但值得更多关注。
    【解决方案3】:

    您将获得的关闭是全局忽略文件:

    git config --global core.excludesfile ~/.gitignore
    

    这当然就像在 repo 中有一个 .gitignore,但适用于您系统上的所有 repo(并且不会传播到外部克隆。)

    【讨论】:

    • 谢谢!但我已经有全局忽略文件。我只想忽略不同类型项目中的不同文件,有可能吗?
    猜你喜欢
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 2019-08-26
    • 2021-08-29
    相关资源
    最近更新 更多