0x01.Git参数autocrlf
autocrlf 是 Git 中用于处理不同操作系统换行符(Line Endings)的核心配置参数,主要解决 Windows(使用 CRLF,即 \r\n)与 Unix/Linux/macOS(使用 LF,即 \n)之间的换行符差异问题,避免因换行符不一致导致的代码冲突或提交混乱。
其工作原理是:当文件在工作区与版本库(.git 目录)之间传输时,Git 会根据 autocrlf 的设置自动转换换行符。
常见配置值及含义
-
autocrlf = true(Windows 系统推荐)- 提交(commit)时:自动将工作区的
CRLF转换为LF存入版本库。 - 检出(checkout)时:自动将版本库的
LF转换为CRLF到工作区。 - 适用场景:Windows 开发者使用 Windows 风格换行符,且团队可能有跨平台开发者。
- 提交(commit)时:自动将工作区的
-
autocrlf = input(Unix/Linux/macOS 系统推荐)- 提交时:自动将工作区的
CRLF转换为LF存入版本库(若工作区是LF则不处理)。 - 检出时:不转换,直接使用版本库的
LF到工作区。 - 适用场景:Unix 类系统开发者,避免引入 Windows 风格换行符。
- 提交时:自动将工作区的
-
autocrlf = false(不自动转换,需谨慎使用)- 提交和检出时均不转换换行符,完全由用户手动控制。
- 风险:跨平台协作时易出现大量换行符变更的无效提交,或文件因换行符不一致被误判为修改。
- 适用场景:明确需要保留原始换行符的特殊文件(如二进制文件、脚本等)。
配置方法
-
全局配置(对所有仓库生效):
# Windows 推荐 git config --global core.autocrlf true # Unix/Linux/macOS 推荐 git config --global core.autocrlf input -
局部配置(仅对当前仓库生效,需在仓库目录执行):
git config core.autocrlf [true|input|false] -
查看当前配置:
git config core.autocrlf # 或查看全局配置 git config --global --get core.autocrlf
补充说明
- 配合
.gitattributes文件使用效果更佳:通过在仓库根目录添加.gitattributes,可针对特定文件类型(如*.txt、*.sh)设置更精细的换行符规则,覆盖autocrlf的全局配置。 - 避免混合使用不同配置:团队成员应统一换行符处理策略,否则可能导致提交记录混乱。