【问题标题】:How to tell git to preserve CRLF specifically for a single set of files? Mark a text file as binary?如何告诉 git 专门为一组文件保留 CRLF?将文本文件标记为二进制文件?
【发布时间】:2020-05-16 23:50:30
【问题描述】:

我想将 repo 中的一些文本文件设置为二进制文件进行克隆/下载。即:绕过 git 中的 CRLF 设置,只克隆一个字节一个字节。

上下文

在 git 中有无数关于 CRLF 的帖子。但通常它们是关于整个项目的一般设置,主要取决于您使用的是 Linux 还是 Windows。

但我面临着前所未有的情况。我愿意在我的项目中设置一个文件夹,其中包含RFC 5322 定义的示例电子邮件,它定义了电子邮件的行尾正好是CRLF。这是一个与电子邮件相关的项目,将用于单元测试。

如果我让系统随意处理文本文件,在许多情况下,这些文件将下载为LF

我希望这几个文件被“强制”以“二进制模式”下载,因此无论您在哪个平台或设置下执行git clone,这些文件都不会丢失一个字节;否则他们会打破标准。

问题

  • 这可能吗?
  • 如何在添加或提交时将那些文件标记为“二进制”,以便任何愿意克隆的人都能正确克隆它们?
  • 我应该使用addcommit 的任何开关吗?

【问题讨论】:

标签: git email newline binaryfiles


【解决方案1】:

您确实可以在.gitattributes 文件中将这些文件标记为二进制文件,但这会阻止它们被区分和合并,这可能不是您想要的。更简单的方法是将它们指定为具有 CRLF 行尾,如下所示:

*.mbox eol=crlf

这将强制将这些文件写入具有 CRLF 结尾的工作树,而不管平台如何。如果您出于某种原因想要将它们标记为二进制,则可以将eol=crlf 替换为binary。例如,如果您的电子邮件包含原始 8 位未编码数据,您可能会希望这样做。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-10-02
  • 2011-09-28
  • 2011-10-14
  • 1970-01-01
  • 2013-11-02
  • 2011-08-10
  • 1970-01-01
相关资源
最近更新 更多