我尝试将此添加到.gitattributes:
* text=auto
*.sql diff
但它仍然显示如下:
BIN WebRole/Sql/Objects/dbo.Content.Table.sql →
WebRole/Sql/dbo.Content.Table.sql Binary file not shown
非常感谢这方面的帮助。
答案 0 :(得分:7)
GitHub可以很好地决定它如何管理它的差异(例如,他们有3D renderings,maps或images的自定义差异。
GitHub support将能够确切地说出.sql
文件的处理方式和差异。
但是还要检查GitHub仓库中sql文件的编码 正如我在“Why does git think my cs file is binary?”中提到的,UTF-16文件可能存在问题 确保至少sql文件是UTF-8。
答案 1 :(得分:6)
Git通常通过检查内容的开头来正确猜测blob是否包含文本或二进制数据。然而,在你的情况下,git变得混乱并将文件视为二进制文件,可能是由于文件中某处的二进制数据。
来自git-diff手册页:
-a, --text Treat all files as text.
所以你仍然可以很容易地得到文本差异,如下所示:
git diff -a WebRole/Sql/Objects/dbo.Content.Table.sql
要覆盖git不正确的猜测,请将以下内容添加到与文件相同的目录中的.gitattributes:
* .sql diff
并提交此文件。这将强制git从现在开始将每个.sql文件视为文本,不管它是否包含二进制数据。
答案 2 :(得分:2)
我发现起作用的唯一方法是将.sql文件的编码从默认的UTF16编码更改为UTF8。下面根据您的情况概述了三种方法:
如果要更改的文件很多,并且对运行Powershell脚本感到满意,则可以尝试以下操作:
为了避免将来需要转换文件,您可以使用此link
中概述的方法来更改在SSMS中创建的新查询的模板。答案 3 :(得分:1)
它看起来像文件编码问题,你使用什么编码?
比照关注SO问题:Why does Git treat this text file as a binary file?和Can I make git recognize a UTF-16 file as text?。
你可以强制你的本地git允许文件上的文本差异,但不允许GitHub。
检查您的编码并用UTF-8替换您的文件以解决问题。