如何防止Git/GitLab修改EOL行尾字符?
Git跨平台行尾格式失效修复方案
.gitattributes配置不生效的核心原因是已提交到远程仓库的历史文件不会自动更新行尾格式,配置仅对后续新提交的文件生效,可按以下步骤处理:
1. 修正.gitattributes配置
你使用的*.sh binary和*.sh text eol=lf为互斥配置,仅需保留一条即可,shell脚本推荐使用text规则确保跨平台统一行尾:
# 可选:自动识别所有文本文件做行尾转换 * text=auto # 强制所有.sh文件在仓库存储和检出时均为LF行尾 *.sh text eol=lf
2. 重置本地仓库缓存,归一化行尾格式
操作前先提交所有本地未提交的变更,避免文件丢失:
# 暂存本地未提交的修改(可选) git stash # 清除Git本地文件索引缓存 git rm --cached -r . # 按照.gitattributes规则重新生成工作区文件,自动归一化行尾 git reset --hard
3. 提交变更到远程仓库
git add . git commit -m "feat: 统一.sh文件行尾格式为LF,更新.gitattributes配置" git push
4. 其他设备拉取后的校验操作
其他环境拉取最新代码后如果仍然出现CRLF行尾,执行以下命令重置本地工作区即可:
git rm --cached -r . git reset --hard
可选:Windows环境全局配置避免复发
在Windows开发设备执行以下全局配置,从根源避免Git自动转换行尾:
# 完全关闭自动行尾转换 git config --global core.autocrlf false # 可选:提交时自动转LF,检出时不转CRLF,兼顾跨平台开发 git config --global core.autocrlf input
内容的提问来源于stack exchange,提问作者Jack BeNimble
相关产品推荐
相关产品推荐

