You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨Windows与Ubuntu环境排查Git autocrlf问题

解决Windows与Ubuntu跨Git开发时所有文件被标记为修改的问题

排查步骤与解决方案

1. 确认实际生效的换行符配置

首先检查当前Git的换行符相关配置,确保没有层级冲突:

git config --list --show-origin | grep -E "(core.autocrlf|core.eol)"

输出会显示每个配置的来源(系统/全局/本地仓库),确保core.autocrlf全为false,同时注意core.eol的设置——如果该值不一致,也可能导致换行符检测异常。

2. 验证文件换行符差异

执行以下命令,查看是否是换行符(LF/CRLF)不一致导致的虚假修改:

git diff --name-only --diff-filter=M -z | xargs -0 git diff --no-index --stat <(git show HEAD:) {}

如果输出显示文件的换行符类型变化(比如CRLF -> LF或反之),则确认问题根源是跨平台换行符不统一。

3. 统一现有文件的换行符

方式一:通过Git命令批量归一化

确保本地配置正确后,执行以下命令让Git重新识别文件的换行符:

git add --renormalize .
git commit -m "Normalize line endings to match repository standard"

此命令会将所有文件的换行符统一为仓库当前的标准,提交后推送到远程,Ubuntu端拉取后也能保持一致。

方式二:手动转换换行符

如果需要手动调整,可使用:

  • Git Bash中的dos2unix/unix2dos工具批量转换
  • VS Code:打开仓库文件夹,点击右下角的换行符标识(如CRLF),选择目标换行符(如LF),然后批量保存所有文件

4. 添加.gitattributes文件(永久避免问题)

在仓库根目录创建.gitattributes文件,写入以下内容:

* text=auto eol=lf

该文件会强制Git对所有文本文件使用LF换行符,优先级高于本地全局配置,彻底解决跨平台换行符冲突问题。


内容的提问来源于stack exchange,提问作者Arkoz Tomatee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 10:32:35