You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows平台Unity项目Git提交LF/CRLF转换不符合预期问题咨询

我太懂这个坑了!Windows上用Git搞Unity项目,换行符简直是日常头疼的问题。让我一步步帮你搞定,保证实现本地随便混合用LF/CRLF,提交到仓库全转成LF的需求:

第一步:先把Unity的版本控制基础设置搞对

先打开Unity,进Edit > Project Settings > Version Control,把这两个选项调好:

  • Mode 设为 Visible Meta Files:让每个资源都生成对应的.meta文件,Git才能正确追踪这些资产
  • Asset Serialization 设为 Force Text:把所有Unity资产转成文本格式,方便Git做diff和合并,也能让换行符规则生效
第二步:配置.gitattributes文件(核心规则)

在项目根目录新建/编辑.gitattributes文件,把下面的内容粘进去——这是专门针对Unity项目的换行符+资产类型配置:

# 通用规则:所有文本文件提交时转LF,检出时不强制转换(让本地编辑器自己决定)
* text=auto eol=lf

# Unity文本格式资产(Force Text模式下的所有文本类资产)
*.asset text eol=lf
*.prefab text eol=lf
*.meta text eol=lf
*.unity text eol=lf
*.mat text eol=lf
*.anim text eol=lf
*.shader text eol=lf
*.cs text eol=lf
*.txt text eol=lf
*.md text eol=lf

# Unity二进制资产(完全不处理换行符,避免破坏文件)
*.fbx binary
*.png binary
*.jpg binary
*.jpeg binary
*.tga binary
*.mp3 binary
*.wav binary

这里的eol=lf就是告诉Git:不管本地是什么换行符,提交到仓库时统一转成LF;text=auto让Git自动识别文本文件,不会碰二进制文件。

第三步:调整本地Git仓库的配置,避免全局干扰

打开Git Bash(或者Windows终端),进到项目根目录,执行这两条命令:

# 关闭自动CRLF转换,让Git严格遵循.gitattributes的规则
git config core.autocrlf false
# 设置仓库默认换行符为LF,确保提交逻辑统一
git config core.eol lf

之前你看到的LF will be replaced by CRLF警告,大概率就是因为全局的core.autocrlf是默认的true——这个设置会让Git把仓库里的LF自动转成CRLF给你本地用,和你要的逻辑完全反了,所以必须关掉它。

第四步:修复已有的文件换行符问题(如果需要)

如果你的项目已经有文件被Git错误转换过换行符,得让Git重新识别一遍:

  1. 先确保所有本地修改都已经提交或者备份好,别丢了代码!
  2. 执行下面三条命令:
# 移除暂存区的所有文件,保留工作区的文件不变
git rm --cached -r .
# 重新把所有文件加入暂存区,此时Git会按照新的.gitattributes规则处理换行符
git add .
# 提交这个换行符标准化的更改
git commit -m "Normalize line endings to LF for all text files in repository"
为什么你之前会看到那个烦人的警告?

简单说:之前你的Git配置(大概率是全局的core.autocrlf=true)在搞反向操作——它会把仓库里的LF转成CRLF给你本地用,当你修改的文件里出现LF时,Git就会警告要把LF转成CRLF,这完全违背了你“提交时转LF”的需求。

现在按照上面的步骤配置完,Git就会老老实实:本地你编辑器爱用LF还是CRLF都随便,只要提交,所有文本文件的换行符都会统一转成LF存到仓库里,再也不会有奇怪的警告了。

内容的提问来源于stack exchange,提问作者Bruce Lee

火山引擎 最新活动