Git 的 CRLF,LF 问题详解

| 选择喜欢的代码风格  

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

core.autocrlf & core.safecrlf


#Git 提供了一个名为 core.autocrlf 的配置,可以自动完成标准化与转换。它的设置方式如下:

git config --global core.autocrlf  [true | input | false]  # 全局设置
git config --local core.autocrlf  [true | input | false] # 针对本项目设置

  • true 自动完成标准化与转换
  • input 只做标准化操作,不做转换操作
  • false 提交与检出的代码都保持文件原有的换行符不变

CRLF 与 LF 混合的文本文件不受此配置控制。Git 安装后默认为 false

.gitattributes 文件


core.autocrlf 的配置依赖于每一位参与项目的开发机器上的配置,这很难确保每个人都能正确配置。于是在规范项目中的换行符方面,还有一套添加配置文件的方案。在项目的根目录下可以添加一个.gitattributes 文件。它的优先级高于 core.autocrlf 的设置,可以覆盖 core.autocrlf 的。它类似于 .gitignore 文件,随提交修改生效,一个项目中可以维持一份相同的配置。所以,它能够避免每个开发人员配置不同的问题。

.gitattributes 文件的功能不只有配置换行符。详细的说明文档可以参考猛戳这里 - gitattributes(5) Manual Page。这里只针对换行符的配置做一下简单的介绍:

#基本形式
filter attr1 attr2 ....

#filter 代表匹配文件的通配符,在它后面跟着相应的属性,用空格间隔,如:

* 匹配所有文件
*.txt  匹配文件名以txt结尾的文件

.gitattributes 配置示例:


一个配置的例子,*.dat 其实是个纯文本的 IP 库文件,在这里配置以免 GIT 给做了 CRLF 转换:

# Set the default behavior, in case people don't have core.autocrlf set.
*.dat text eol=crlf

Git 扩展阅读:




Git 的 CRLF,LF 问题评论