Git add --renormalise在Windows旧仓库不生效,如何处理?
解决Git行尾归一化无变更的问题
不需要专门到Unix机器上操作,Windows环境下就能完成行尾归一化,核心是先配置好.gitattributes并临时调整autocrlf设置,让Git识别到需要转换的行尾变更。具体步骤如下:
添加
.gitattributes配置文件
在仓库根目录创建.gitattributes,这是跨平台行尾处理的核心规则,内容如下:* text=auto这个配置告诉Git自动识别文本文件,将仓库内的文件统一存储为LF,检出时根据操作系统自动转换为CRLF(Windows)或LF(Unix)。
临时关闭当前仓库的autocrlf转换
在Windows命令行执行:git config core.autocrlf false这一步是关键——之前执行
git add --renormalise .无变更,是因为Windows下autocrlf默认开启时,Git会保持本地文件为CRLF(和远程仓库一致),无法触发转换。关闭autocrlf后,Git会严格按照.gitattributes的规则处理行尾。执行归一化并提交变更
运行命令让Git重新归一化所有文件:git add --renormalize .此时Git会将本地的CRLF文本文件转换为LF,标记为待提交变更。随后提交:
git commit -m "Normalize line endings to LF in repository"恢复Windows环境的autocrlf设置
提交完成后,把autocrlf改回适合Windows的设置(确保本地检出文件为CRLF):git config core.autocrlf true推送到远程仓库
最后推送变更到远程:git push
后续注意事项
- 其他开发者拉取变更后,需要确保自己的Git客户端配置了正确的autocrlf(Windows设
true,Unix设input或false),并建议重新克隆仓库或执行git reset --hard来同步行尾设置,避免本地文件出现行尾混乱。
内容的提问来源于stack exchange,提问作者ScottishTapWater
相关产品推荐
相关产品推荐

