如何让Git显示我的.sql文件的更改?

Sam*_*tar 18 git github

我尝试将其添加到.gitattributes:

* text=auto
*.sql diff
Run Code Online (Sandbox Code Playgroud)

但它仍然显示如下:

BIN ????? WebRole/Sql/Objects/dbo.Content.Table.sql ?
WebRole/Sql/dbo.Content.Table.sql Binary file not shown
Run Code Online (Sandbox Code Playgroud)

非常感谢这方面的帮助.

mrd*_*le1 10

我发现唯一有效的方法是将 .sql 文件的编码从默认的 UTF16 编码更改为 UTF8。下面根据您的情况概述了三种方法:

对于少量文件

  1. 在 Visual Studio 或 SSMS 中选择另存为
  2. 选择保存按钮旁边的下拉箭头 在此处输入图片说明
  3. 选择“使用编码保存...”
  4. 在“确认另存为”对话框中选择“是”

在此处输入图片说明

  1. 从出现的对话框中选择 Unicode (UTF-8 with signature) - CodePage 65001,然后按 OK。请注意,UTF-8 选项通常在当前选择的编码之上(Unicode - Codepage 1200)

在此处输入图片说明

对于大量文件

如果您有许多文件要更改并且对运行 Powershell 脚本感到满意,则可能需要尝试以下操作:

  1. 从此链接下载由 Microsoft MCC、MVP Stefan Roth 创建的 powershell 脚本
  2. powershell 脚本未经过数字签名,因此您需要以管理员身份打开 powershell,然后降级此处概述的执行策略(临时)。选择绕过或不受限制的策略。
  3. 此处详细介绍如何运行 powershell 脚本。脚本的路径需要用引号括起来。然后脚本需要源文件夹和目标文件夹,不能用引号括起来。请求的编码只是utf8。

对于任何未来创建的文件

为了防止将来必须转换文件,您可以使用此链接中概述的方法更改在 SSMS 中创建的新查询的模板


Von*_*onC 7

GitHub可以很好地决定它如何管理它的差异(例如,它们具有用于3D渲染,地图图像的自定义差异).

GitHub支持将能够确切地说明如何.sql处理和区分文件.

但是还要检查GitHub仓库中sql文件的编码.
正如我在" 为什么git认为我的cs文件是二进制文件? "中提到的,UTF-16文件可能会有问题.
确保至少sql文件是UTF-8.


小智 7

Git通常通过检查内容的开头来正确猜测blob是否包含文本或二进制数据.然而,在你的情况下,git变得混乱并将文件视为二进制文件,可能是由于文件中某处的二进制数据.

从git-diff手册页:

   -a, --text
       Treat all files as text.
Run Code Online (Sandbox Code Playgroud)

所以你仍然可以很容易地获得文本差异,如下所示:

git diff -a WebRole/Sql/Objects/dbo.Content.Table.sql
Run Code Online (Sandbox Code Playgroud)

要覆盖git不正确的猜测,请将以下内容添加到与文件相同的目录中的.gitattributes:

*.sql diff

并提交此文件.这将强制git从现在开始将每个.sql文件视为文本,不管它是否包含二进制数据.