obsidian/笔记文件/2.笔记/git排除 排除CRLF行尾差异.md
2025-03-26 07:06:54 +08:00

1.3 KiB
Raw Permalink Blame History

#杂七杂八常识

这个问题是关于Git中如何处理CRLF回车换行差异问题。在不同操作系统中文本文件的行结束符是不同的
Windows使用CRLF\r\n
Linux/Unix使用LF\n
旧版Mac使用CR\r
这种差异会导致在跨平台协作时即使文件内容没有实质性变化Git也会报告有差异因为行结束符发生了变化。

使用.gitattributes文件

使用说明,参考gitattributes作用 在项目根目录创建.gitattributes文件,内容如下:

# 设置默认行为所有文件都使用LF
* text=auto eol=lf

# 对特定类型的文件强制使用LF
*.java text eol=lf
*.xml text eol=lf
*.txt text eol=lf
*.md text eol=lf
*.json text eol=lf

# 二进制文件不应修改行尾
*.png binary
*.jpg binary
*.jar binary

这种方法最为可靠因为它是基于项目的而不是个人Git配置所有团队成员都会遵循相同的规则。

对已有项目修复CRLF问题

如果项目已经存在CRLF混乱问题需要输入两行指令进行修正即可

# 重新检出所有文件,应用行尾设置
git rm --cached -r .
git reset --hard

以上设置可以有效避免Git因行尾符差异而产生不必要的变更记录。