You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向Git仓库提交.sql后缀MS SQL文件后变为二进制不可读问题咨询

Git提交MS SQL(Transact).sql文件编码损坏解决方案

问题根本原因

.sql文件提交后字符间夹杂控制字符、显示为二进制、拉取后乱码的核心原因是:MS SQL相关工具默认生成的.sql文件常采用UTF-16 LE编码,Git未被明确告知该类文件的编码规则时,会自动将其识别为二进制文件,或按照UTF-8规则做行尾转换,导致编码结构被破坏,出现s?e?l?e?c?t类的乱码。之前配置.gitattributes未生效,是因为没有同步统一本地文件编码、清理Git历史缓存,旧的错误提交持续影响。

可落地修复步骤

  • 统一全团队.sql文件编码规范:所有.sql文件本地存储时统一采用**UTF-8 带BOM(代码页65001)**格式,该格式同时兼容SSMS、VS Code等各类开发工具,也能被Git正确识别为文本文件。
    • SSMS修改方式:保存文件时选择「高级保存选项」,编码栏选择「Unicode (UTF-8 带签名) - 代码页65001」
    • VS Code修改方式:点击右下角状态栏的编码标识,选择「通过编码保存」,搜索选择「UTF-8 with BOM」
  • 配置项目根目录.gitattributes文件,明确.sql文件的处理规则,避免Git自动识别出错,写入以下内容:
    *.sql text working-tree-encoding=UTF-8-BOM eol=lf
    
    规则说明:声明.sql为文本文件需要做行尾归一处理,本地工作区编码固定为UTF-8带BOM,仓库内存储的行尾格式统一为LF,可根据团队操作系统情况将eol=lf替换为eol=crlf。
  • 清理Git历史缓存,重新提交所有.sql文件,覆盖仓库内的错误编码版本,在项目根目录依次执行以下命令:
    git rm --cached -r *.sql
    git add .gitattributes *.sql
    git commit -m "fix: 统一.sql编码规则,修复提交乱码问题"
    git push
    
    注:如果执行git add时出现编码相关报错,先升级本地Git到2.18以上的最新稳定版本即可。
  • 团队所有成员拉取最新提交前,先备份本地未提交的.sql改动,拉取后检查本地文件编码是否符合规范,确认无异常后再进行后续开发。

验证标准

推送完成后访问BitBucket对应.sql文件的预览页,可正常显示文本内容无乱码、无控制字符,即表示修复生效。若仍有个别文件显示为二进制,检查对应本地文件编码是否符合规范后,重新走缓存清理流程提交即可。

内容的提问来源于stack exchange,提问作者Mr.Glaurung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 22:09:00