【问题标题】:How to get git not to do any line ending conversions except for specific file types如何让 git 除了特定文件类型之外不进行任何行结束转换
【发布时间】:2016-03-11 17:59:56
【问题描述】:

我希望 git 除了特定文件(比如.c.h)之外不要进行任何行结束转换。我想通过.gitattributes 来完成它,这样我就可以覆盖用户机器上的任何环境。这主要针对 Windows 客户端。

我想要这样的东西:

* -text

*.c eol=lf
*.h eol=lf

但是 git 只是忽略了第一行之后的所有内容(它根本不执行行尾操作)。

有没有办法做到这一点?

【问题讨论】:

    标签: git newline gitattributes core.autocrlf


    【解决方案1】:

    * -text 行明确声明所有文件都应作为二进制文件处理。这将取代您的 EOL 设置,因为它们仅适用于文本文件。您可以通过在白名单扩展程序上强制使用文本模式来绕过此问题。

    * -text
    *.c text eol=lf
    *.h text eol=lf
    

    GitHub 上有一篇很好的文章,了解更多详情
    https://help.github.com/articles/dealing-with-line-endings/

    编辑:重新阅读您的帖子,并调整回复以更好地满足您的要求

    【讨论】:

    • 那行得通。我错过了text 位。回购中有很多不同的文件类型(50+)。他们中的大多数永远不应该进行线路调整。 * -text 有具体问题吗? mergediff 的行为会有所不同吗?除了几个非常特定的文件类型之外,我想要的只是没有行尾修改。
    • @dbv 我不确定,因此我最初的建议是避免它。 Git 文档在这个 IMO 上有点弱,因为它并没有真正讨论所有的细微差别。有一个单独的-diff 标志肯定会影响差异和合并,但我认为你可以只使用-text。您可能需要稍微阅读一下文档。或者你可以试试看 :) 我在那里没有找到太多,但你可以从 Git 书中收集一些信息:git-scm.com/book/en/v2/Customizing-Git-Git-Attributes
    • 谢谢。我会翻看书。我认为测试将提供明确的答案(测试合并和差异并不难)。
    • 如果有人碰到这个:我做了一个测试,* -text 没有对下面没有明确列出的文本文件做任何坏事
    猜你喜欢
    • 2021-05-28
    • 2019-09-28
    • 1970-01-01
    • 2022-01-09
    • 2019-11-20
    • 2021-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    相关资源
    最近更新 更多