这个问题是换行符差异导致的,通常是CRLF(\r\n)和LF(\n)在 Windows 和 Unix/Linux 系统之间的差异。
如果你使用的是小乌龟,通过修改小乌龟的设置即可解决问题,亲测有效。
常见解决方案:
1.核心设置(推荐)
在 Git Bash 或命令行中执行:
# 提交时自动将 CRLF 转换为 LFgitconfig --global core.autocrlftrue# 或者更严格的设置(Windows推荐)gitconfig --global core.autocrlf input# 检查当前设置gitconfig --global core.autocrlf2.更彻底的解决方案
# 1. 设置 git 不检测换行符变化gitconfig --global core.safecrlffalse# 2. 设置 git 不自动转换换行符gitconfig --global core.autocrlffalse# 3. 设置 git 的 diff 忽略换行符差异gitconfig --global core.whitespace cr-at-eol3.使用 .gitattributes 文件(项目级解决方案)
在项目根目录创建.gitattributes文件,内容:
# 对所有文件设置 * text=auto eol=lf # 或者指定特定文件类型 *.html text eol=lf *.css text eol=lf *.js text eol=lf *.json text eol=lf *.md text eol=lf4.如果你已经提交了有问题的文件
# 重置工作区gitrm--cached -r.gitreset --hard# 或者只重置特定文件gitcheckout --<file>5.针对 TortoiseGit(小乌龟)的额外设置
- 右键 → TortoiseGit → Settings
- 在 “Git” 标签页下:
- 修改 “Global” 配置
- 添加或修改:
[core] autocrlf = true safecrlf = false
推荐配置组合:
对于 Windows 用户:
gitconfig --global core.autocrlftruegitconfig --global core.safecrlffalse对于跨平台团队:
gitconfig --global core.autocrlf input验证设置:
# 查看所有相关配置gitconfig --global --list|grep-E"(core|autocrlf|safecrlf)"注意:这些设置主要影响新提交的文件。对于已有文件,可能需要先统一换行符格式再重新提交。