我想在我的.gitattributes文件中使用eol=LF
,但我希望将仅应用于Git自动确定为文本文件的文件。
我能找到的最好的方法是将特定的文件扩展名/ globs定义为text或binary。这并不理想,因为列表可能很大。我已尝试* text=auto eol=LF
,但eol=LF
部分似乎覆盖了auto
部分。
我可以强制使用LF行结尾而不需要特定的git config
设置,并且不会丢失自动文本/二进制推断吗?
答案 0 :(得分:5)
更新:在@romkyns发表评论后我重新检查了所有内容,发现我的解决方案略有不正确。正确的是.gitattributes
- 文件,其中包含以下内容:
* text=auto
根据documentation,,这确保了Git认为是文本的所有文件都将在存储库中具有规范化(LF)行结尾。
原始答案:
您想在.gitattributes
中写下的内容就像这样简单:
* text=auto
* text eol=lf
第一行告诉git自动检测文件类型(二进制或文本,这是git的默认行为,因此可以省略),第二行用LF处理所有检测到的文本文件(并且只有那些)的行结尾行尾。
我使用一些混合二进制内容和一些CRLF结尾的文本文件测试了这个设置,并获得了预期的转换为LF结束。
答案 1 :(得分:3)
我建议三种解决方案:
方法1
我假设您的大多数工作目录文件都是文本文件。因此,为每种文本文件类型添加特定行会浪费大量时间。
unset text
个文件中的binary
个文件可以.gitattributes
属性。由于只有少数binary
文件类型,所以这样做并不乏味。
方法2
我认为您关键的问题是禁用全局eol=lf
设置。根据{{1}}优先顺序,您可以在.gitattributes
中配置具有最高优先级的text=auto
。同时,它只影响工作树。
方法3
完全从工作树中删除$GIT_DIR/info/attributes
。依靠文件编辑器进行行尾转换。我建议使用Notepad ++,这对于Unix风格和Windows风格的EOL转换非常方便。
答案 2 :(得分:0)
Repositery level git属性: (Where should I place my global 'gitattributes' file?)
- 在其中创建一个.git / info / attributes文件: * text = auto
- 对于每个修改过的文件,在执行git add *时,现在应该收到警告 “该文件将在您的工作目录中包含其原始行结尾”