【问题标题】:Best practice for using multiple .gitignore files使用多个 .gitignore 文件的最佳实践
【发布时间】:2012-05-03 16:52:50
【问题描述】:

有一组有用的.gitignore 文件位于 https://github.com/github/gitignore。每个忽略文件都有一个扩展名.gitignore,例如Java.gitignore、vim.gitignore。当我将这些文件直接放入工作目录时,它们不起作用。

是否需要创建单个文件.gitignore并将组成文件合并到其中?

因此,当使用 --global .gitignore 文件时,配置似乎指向单个文件。例如,如果我想在 Global/ 目录中应用所有 .gitignore 文件,我应该手动将它们合并到一个文件中吗?如果是这样,那么让这个合并的文件与“官方”集合保持最新是额外的工作。

重申一下,我承认我们可以在不同的目录中使用不同的.gitignore 文件,但这不是我想要的。我想在一个目录中应用多个.gitignore 文件。

【问题讨论】:

    标签: git github gitignore


    【解决方案1】:

    澄清一下:一个项目的 gitignore 文件被称为.gitignore


    背景:

    .gitignore 指的是它所在的目录,它是具有 .git 存储库的目录的顶级或后代,即“.git/”目录。

    在任何子目录中都可以有多个.gitignore 文件,但最佳实践是在给定项目根目录中拥有一个 .gitignore,并根据需要让该文件引用子目录,例如images/yearly/recent 否则很难知道要查看“哪个” .gitignore 文件以找到被忽略的内容。鉴于您可以使用模式作为文件名,这可能非常棘手!

    我还建议避免使用适用于您计算机上的所有项目的全局.gitignore 文件,尽管您可能会保留一个模板以用于新项目。这里的主要考虑因素是您的.gitignore 将不同于其他开发人员(可能存在也可能不存在),因此结果不确定。一个例外的例子是使用全局 .gitignore 文件来存储我在机器上打开的任何项目中不想要的 IDE 文件,因此我使用全局 .gitigore 和 .idea/ 文件的条目(红宝石矿)。


    您看到列出的模板的意图是通常您正在用特定语言编写给定文件的代码。鉴于此,基于该语言的模板通常就足够了。

    如果代码库中有多种语言,则需要为这些语言组合多个.gitignore,这可以通过多种方式完成,例如:

    cat .gitignore1 .gitignore2 > .gitignore # if .gitignore doesn't exist yet
    cat .gitignore1 >> .gitignore # Add to it if it already exists
    paste .gitignore1 .gitignore # Add to it if it already exists
    

    媒体热(2014 年夏季):

    Gitignorer 是一个帮助创建 .gitignore 文件的简单实用程序。它从 github.com/github/gitignore 中提取特定(指定)的 .gitignore 模板,以及要排除的公共文件,将它们混合在一起,并将它们保存到当前目录中的 .gitignore 中。

    示例用法:

    gitignorer create c java python
    

    Gitignorer 目前在 AUR 上的 https://aur.archlinux.org/packages/gitignorer/ 和 GitHub 上的 https://github.com/zachlatta/gitignorer 上可用


    【讨论】:

    • 所以本质上...是的,您必须手动复制/粘贴到一个文件中。 (除非我误解了这个答案)。
    • 同意,但我觉得有必要指定一些术语。我们正在讨论 GLOBAL(跨存储库).gitignore 和项目根 .gitignore(适用于 ONE repo 中的所有文件)之间的区别。项目根方法也最适合我,根据需要将条目从一个项目复制到另一个项目。全局 .gitignore 似乎很有可能引起混乱。
    • 添加了更多信息以帮助清晰。
    • 添加了更多关于一般避免全局但考虑用于 IDE 文件的信息。
    • 与此相关:stackoverflow.com/questions/3305869/…,更利于使用多个.gitignore文件。
    猜你喜欢
    • 2018-05-16
    • 2010-10-04
    • 2011-04-12
    • 1970-01-01
    • 2011-11-29
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多