1. ホーム
  2. git

[解決済み] なぜgitは私の.sqlファイルをバイナリファイルだと思うのですか?

2023-02-09 19:40:35

質問

いくつかの.sqlファイルをgithubに初めてプッシュしました。しかし、私はコミットを見るとき、それは言っています。

BIN  WebRole/Sql/Database.sql View
Binary file not shown

なぜ "Binary file not shown" と表示されるのか、どなたか教えていただけませんか?

どのように解決するのですか?

拡張子だけでは、GitHub がテキストファイルかどうかを確認することができないのです。

そのため、内容を確認する必要があります。

そして、"で述べたように なぜGitはこのテキスト・ファイルをバイナリ・ファイルとして扱うのですか? "にあるように、その内容にはテキスト・ファイルであると推測するのに十分なアスキー文字が含まれていないかもしれません。

を使うことができます。 .gitattributesファイル を明示的に指定することで .sql はバイナリではなく、テキストである必要があります。

*.sql diff


2018年更新:"で触れている通りです。 utf-8エンコードされた文書でUTF-8エンコードが機能しない "では、Git 2.18 .gitattributesに新しい working-tree-encoding 属性が追加されました。

で示されるように ルシ 's 答え :

*.sql text working-tree-encoding=UTF-16LE eol=CRLF


として コスト で追加される コメント :

<ブロッククオート

これらのファイルが Microsoft SQL Management Studio (または、あなたが使っている MS SQL Server の管理ツールのバージョンで呼ばれているもの) によって生成された場合、保存されるファイルは UCS-2 (または UTF-16) でエンコードされています。

この例は " で見ることができます。 Git では " Binary files a… and b… differ 「に対して *.reg ファイル "

"に記載されているように gitでファイルをバイナリ以外として設定する "にあります。

"なぜGitは私のファイルをバイナリとしてマークしているのでしょうか?"答えは、ファイルの最初の8000文字内のどこかにNUL(0)バイトがあるのを見たからです。

一般的に、これはファイルがUTF-8以外の形式で保存されているために起こります。つまり、UCS-2、UCS-4、UTF-16、または UTF-32 として保存されている可能性があります。これらはすべて、ASCII 文字を使用する場合に NUL 文字が埋め込まれています。


として ネオ 解説 コメントで (そして、その中で なぜGitはこのテキストファイルをバイナリファイルとして扱うのですか? ):

SSMSで保存したファイルのエンコードをUTF-8に変更するには、ファイルメニューの「高度な保存オプション」メニュー項目から、エンコード「UTF-8 with signature」を選択します。