我有一些.sql文件,我只是第一次推送到github.但是当我查看提交时它会说:
BIN ????? WebRole/Sql/Database.sql View
Binary file not shown
Run Code Online (Sandbox Code Playgroud)
有人能告诉我它为什么说"二进制文件没有显示"
Von*_*onC 78
单独的扩展名不足以让GitHub查看它是否是文本文件.
所以它必须看看它的内容.
正如" 为什么Git将此文本文件视为二进制文件? "中所述,其内容可能不包含足够的ascii字符来猜测它是文本文件.
您可以使用.gitattributes文件显式指定.sql应该是文本,而不是二进制文件.
*.sql diff
Run Code Online (Sandbox Code Playgroud)
更新2018:正如我在" Utf-8编码不能处理utf-8编码文档 "中提到的那样,Git 2.18 .gitattributes有一个新working-tree-encoding属性.
所以,如Rusi的回答所示:
*.sql text working-tree-encoding=UTF-16LE eol=CRLF
Run Code Online (Sandbox Code Playgroud)
如果这些文件是由Microsoft SQL Management Studio生成的(或者您正在使用的MS SQL Server管理工具版本中调用的那些文件),则它保存的文件将以UCS-2(或UTF-16)编码 - a双字节编码,这确实不是Git眼中的文字
你可以在" Git说" Binary files a… and b… differ"on for *.regfiles "中看到一个例子
如" 在git中将文件设置为非二进制 "中所述:
"为什么Git将我的文件标记为二进制文件?" 答案是因为它在文件的前8000个字符内的某处看到了NUL(0)字节.
通常,这是因为文件被保存为UTF-8以外的其他内容.因此,它可能被保存为UCS-2,UCS-4,UTF-16或UTF-32.所有这些都在使用ASCII字符时嵌入了NUL字符
正如Neo 在评论中提到的那样(为什么Git将此文本文件视为二进制文件?):
您可以通过从"文件"菜单中的"高级保存选项"菜单项中选择编码"带签名的UTF-8",将SSMS中已保存文件的编码更改为UTF-8.
Rus*_*usi 10
这个老问题有了新答案——working-tree-encoding正是由于这些原因,git 最近增加了一个选项。请参阅gitattributes文档 [确保您的手册页匹配,因为这是相当新的!]
找出 sql 文件的编码,例如 file
如果(比如说)它的 utf-16 在 Windows 机器上没有 bom 然后添加到你的 gitattributes 文件
*.sql text working-tree-encoding=UTF-16LE eol=CRLF
Run Code Online (Sandbox Code Playgroud)
如果 utf-16 little endinan (with bom) make it
*.sql text working-tree-encoding=UTF-16 eol=CRLF
Run Code Online (Sandbox Code Playgroud)
使用链接问题的可接受答案和其他一些意见,我提出了此解决方案,该问题正在运行并且可以在Win10上运行
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
Get-ChildItem -Recurse *.sql | foreach {
$MyPath = $_.FullName;
$Contents = Get-Content $MyPath
[System.IO.File]::WriteAllLines($MyPath, $Contents, $Utf8NoBomEncoding)
}
Run Code Online (Sandbox Code Playgroud)
对于那些在 2008 R2 的 SSMS 中遇到此问题的用户(是的,仍然如此!),您可以按如下方式设置默认编码:
地点可能有所不同。这是 Windows 7 64 位上默认安装使用的目录。
这用作新 .SQL 文件的模板。使用您需要的编码保存它(在我的例子中,使用 Windows 行结尾的 Windows-1252)。“保存”按钮右侧的箭头让您可以选择编码。
您需要与开发团队协调编码以避免 git 和 SSMS 麻烦。
这是一个对我有用的快速解决方法,使用 SSMS 2012。在工具 => 选项 => 环境 => 国际设置下,如果您将语言从“英语”更改为“与 Microsoft Windows 相同”(它可能会提示您重新启动) SSMS 以使更改生效),它将不再使用 UTF-16 作为新文件的默认编码 - 我创建的所有新文件现在都有代码页 1252(文件 => 高级保存选项),这是一个 8 位编码方案似乎没有任何问题Git Diff
| 归档时间: |
|
| 查看次数: |
23120 次 |
| 最近记录: |