作者:蜜小嘟_546 | 来源:互联网 | 2023-05-25 07:52
我有一些.sql文件,我只是第一次推送到github.但是当我查看提交时它会说:
BIN ????? WebRole/Sql/Database.sql View
Binary file not shown
有人能告诉我它为什么说"二进制文件没有显示"
1> VonC..:
单独的扩展名不足以让GitHub查看它是否是文本文件.
所以它必须看看它的内容.
正如" 为什么Git将此文本文件视为二进制文件? "中所述,其内容可能不包含足够的ascii字符来猜测它是文本文件.
您可以使用.gitattributes文件显式指定.sql
应该是文本,而不是二进制文件.
*.sql diff
更新2018:正如我在" Utf-8编码不能处理utf-8编码文档 "中提到的那样,Git 2.18 .gitattributes有一个新working-tree-encoding
属性.
所以,如Rusi的回答所示:
*.sql text working-tree-encoding=UTF-16LE eol=CRLF
正如kostix在评论中补充道:
如果这些文件是由Microsoft SQL Management Studio生成的(或者您正在使用的MS SQL Server管理工具版本中调用的那些文件),则它保存的文件将以UCS-2(或UTF-16)编码 - a双字节编码,这确实不是Git眼中的文字
你可以在" Git说" Binary files a… and b… differ
"on for *.reg
files "中看到一个例子
如" 在git中将文件设置为非二进制 "中所述:
"为什么Git将我的文件标记为二进制文件?" 答案是因为它在文件的前8000个字符内的某处看到了NUL(0)字节.
通常,这是因为文件被保存为UTF-8以外的其他内容.因此,它可能被保存为UCS-2,UCS-4,UTF-16或UTF-32.所有这些都在使用ASCII字符时嵌入了NUL字符
正如Neo 在评论中提到的那样(为什么Git将此文本文件视为二进制文件?):
您可以通过从"文件"菜单中的"高级保存选项"菜单项中选择编码"带签名的UTF-8",将SSMS中已保存文件的编码更改为UTF-8.
您可以通过从"文件"菜单中的"高级保存选项"菜单项中选择编码"带签名的UTF-8",将SSMS中已保存文件的编码更改为UTF-8.资料来源:http://stackoverflow.com/a/21170043/197591
@Alan,如果这些文件是由Microsoft SQL Management Studio生成的(或者在您使用的MS SQL Server管理工具版本中调用的那些文件),它保存的文件将以UCS-2(或UTF-16)编码 - 一个双字节编码,这确实不是Git眼中的文本.
另一个巧妙的技巧,如果你在Windows中运行Git Bash并且不想覆盖你对文件所做的任何更改,只需输入"dos2unix*.sql".这将把所有UCS2文件转换为UTF8,允许git识别文本.
@Neo好点.我已将您的评论包含在答案中以获得更多可见性.
2> Carl..:
使用链接问题的可接受答案和其他一些意见,我提出了此解决方案,该问题正在运行并且可以在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)
}