Windows下Git的EOL/CRLF的处理

来源:互联网 发布:京瓷1020扫描软件 编辑:程序博客网 时间:2024/05/20 09:23

不同平台的EOL

不同平台下的默认行尾不一样
CR回车 LF换行

平台 Windows CRLF \r\n UNIX/Linux LF \n Mac CR \r

Git的autocrlf功能

Git在windows平台下,为了方便统一行尾,引入了autocrlf功能。
在提交修改时,自动将文本的eol修改为LF。检出时自动修改为CRLF
然而实际上,自动转换eol有可能会导致一些兼容性的问题。这样可以选择主动关闭autocrlf功能


在本地Git的全局设置中关闭

// 本地文件格式 -> 库文件格式 -> 检出后文件格式// ?? -> lf -> crlf$git config --global core.autocrlf true// ?? -> lf -> lf$git config --global core.autocrlf input// ?? -> ?? -> ??$git config --global core.autocrlf false

推荐使用core.autocrlf false的设置

  • 优点
    • 简单!
    • 清晰!
  • 缺点
    • 需要每台设备都自己设置,不能保证

在Git库根目录创建.gitattributes文件设置属性

根目录新建一个.gitattributes文件,在里边设置不同文件的行尾设置。

# 格式 : pattern attr1 attr2 ...# 关闭所有行尾统一* -text* # 启用*.txt行尾统一功能*.txt text# 关闭*.txt行尾统一功能*.txt -text# 设置*.txt的eol为具体格式*.txt text eol=lf*.txt text eol=crlf# 把文件当做二进制代码处理*.text -text -diff*.text binary

  • 优化
    • 不需要所有人都设置机器
  • 缺点
    • 设置相对复杂

参考资料

  • Git - gitattributes Documentation(强烈建议阅读)
  • Dealing with line endings - User Documentation
  • Git中的AutoCRLF与SafeCRLF换行符问题 - 至尊王者 - 博客园
  • Stack Overflow - git replacing LF with CRLF
阅读全文
0 0