2015-07-21 54 views
14

我曾嘗試加入這個到.gitattributes:如何讓Git顯示更改我的.sql文件?

* text=auto 
*.sql diff 

但它仍然這樣表示:

BIN  WebRole/Sql/Objects/dbo.Content.Table.sql → 
WebRole/Sql/dbo.Content.Table.sql Binary file not shown 

將不勝感激幫助與此有關。

+3

實際上在.gitAttributes文件的拼寫中是否有大寫的'A'。這可能會影響區分大小寫的文件系統。 Git通常會拼寫這個文件名'.gitattributes'。 – Wolf

+1

我認爲你的意思是Git,而不是GitHub,對嗎? – bitoiu

+0

我使用的是Git,但它是GitHub屏幕向我顯示上面的消息。 –

回答

4

Git通常會通過檢查內容的開始來正確猜測blob是否包含文本或二進制數據。然而,在你的情況下,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文件作爲文本從現在開始處理,無論它是否包含二進制數據。

6

GitHub可以很好地決定它如何管理它的差異(例如,他們有自定義差異爲3D renderings,mapsimages)。

GitHub support將能夠精確地說明.sql文件是如何處理和區分的。

但也請檢查您的GitHub倉庫中的SQL文件的編碼。
正如我在「Why does git think my cs file is binary?」中所提到的,UTF-16文件可能存在問題。
確保至少sql文件使用UTF-8。

相關問題