行尾符格式转换问题(CRLF vs LF)如何快速解决
🔍 问题场景
在使用 AI Agent(如 Trae IDE AI 助手)辅助开发时,有时会遇到一个令人困扰的问题:Git 显示文件有修改,但实际内容完全相同。
问题现象
当你使用 git status 查看状态时,会发现某个文件(通常是 pom.xml、配置文件等)被标记为已修改,但打开文件却看不到任何内容变化。
在 IDE(如 IntelliJ IDEA)中查看差异时,会看到类似这样的提示:
Contents have differences only in line separators

说明 :截图显示原始版本使用
CRLF,当前版本使用LF,仅有行尾符不同。
📌 问题原因
CRLF 与 LF 的区别
| 格式 | 全称 | 操作系统 | 表示 |
|---|---|---|---|
| CRLF | Carriage Return + Line Feed | Windows | \r\n |
| LF | Line Feed | Unix/Linux/macOS | \n |
为什么会出现这个问题?
- AI Agent 的处理:AI 助手在处理文件时,可能会将文件转换为统一的 LF 格式
- IDE 设置:某些 IDE 默认配置为 LF 格式
- 跨平台协作:多人协作时,不同操作系统使用不同的行尾符格式
🛠️ 快速解决方案


AI时代还是 点一下 选一下吧!
方法一:撤销单个文件的更改(推荐)
如果只有少数文件出现问题,可以直接用 Git 恢复:
bash
# 恢复单个文件到原始状态
git checkout -- shouyi-modules/shouyi-ai/pom.xml
操作步骤:
- 打开终端,进入项目根目录
- 执行上述命令
- 使用
git status验证文件已恢复
方法二:批量恢复所有受影响文件
bash
# 撤销所有未提交的更改(谨慎使用!)
git checkout -- .
⚠️ 注意:此命令会撤销所有未提交的更改,请确保已保存重要修改!
方法三:手动转换行尾符
如果你确实需要转换行尾符格式:
bash
# 将文件转换为 LF 格式
sed -i 's/\r$//' filename
# 将文件转换为 CRLF 格式
sed -i 's/$/\r/' filename