我可以在git中提交特定文件而不影响原始行结尾吗?

时间:2015-05-12 15:20:49

标签: git

正如问题所述,我们有一些测试CSV文件需要保留其行尾。稍后将使用这些文件来测试CSV解析器。

非重复编辑:我不想将所有文件的结尾转换为LF。我想将特定文件推送到Git端保留其原始行结尾,例如CRLF。因此所有其他文件将被标准化为LF,这是Git的默认值,而CSV文件将使用CRLF提交。

2 个答案:

答案 0 :(得分:1)

.gitattributes中,设置用于特定文件的行结束样式。

with-dos-line-endings.csv eol=crlf
with-unix-line-endings.csv eol=lf

答案 1 :(得分:0)

关于.gitattribute文件的@chepner建议我使用了他提出的配置。它没有按预期工作,所以我做了一些挖掘。原来答案是在Git手册中! (RTFM,我知道吗?!)。

检查Git Manual上的EFFECTS部分。

  

<强> EOL
  此属性设置要在其中使用的特定行结束样式   工作目录。它可以在没有任何情况下实现行尾标准化   内容检查,有效设置文本属性。

     

设置为字符串值“crlf
  此设置强制Git规范化线   签入时此文件的结尾并在转换时将它们转换为CRLF   文件已签出。

     

设置为字符串值“lf
  此设置强制Git规范化线   在签入时结束LF并防止在文件时转换为CRLF   签出。

我真正需要的是-text。通过使用-text,您可以让Git将该文件视为二进制文件,而不会影响其行结尾。

  

取消设置路径上的text属性会告诉Git不要尝试任何属性   签入或结账时的行结束转换。

向后兼容的版本:

  

向后兼容crlf属性
  为了向后兼容,crlf属性解释如下:

 crlf        text  
-crlf       -text  
 crlf=input  eol=lf