Git仓库配置gitattributes指定换行类型未生效,求助排查
问题分析与解决方法
你的问题出在两个核心点:text=auto的模糊判断逻辑,以及未对已跟踪文件重新应用新的换行规则。
1. 修正.gitattributes配置
text=auto会让Git自动识别文件类型,这个逻辑可能覆盖你指定的eol规则。直接用text强制标记脚本为文本文件,确保换行规则被严格执行:
vm/linux*/** text eol=lf vm/windows*/** text eol=crlf
2. 重新规范化仓库文件
Git不会自动对已跟踪文件应用新的gitattributes规则,需要手动触发重新规范化流程:
# 暂存未提交的更改(如有) git stash # 让Git按新规则重新处理所有文件的换行符 git add --renormalize . # 提交规范化操作 git commit -m "Enforce line ending rules for Linux/Windows scripts" # 恢复暂存的更改(如有) git stash pop
3. 重新检出工作副本
最后重置工作副本,让新规则生效:
git checkout HEAD -- vm/
4. 检查全局配置(可选)
确保全局core.autocrlf设置不会干扰局部规则:
- Linux开发主机上设置为
input或false:git config --global core.autocrlf input - Windows构建主机上保持默认的
true即可(gitattributes规则优先级更高,一般不会冲突)
完成以上操作后,Linux脚本在任何主机上检出都会保持LF换行,Windows脚本会保持CRLF换行,符合你的需求。
内容的提问来源于stack exchange,提问作者mat
相关产品推荐
相关产品推荐

