2010-11-24 16 views
11

我特別需要git把大多數文件擴展名當作二進制文件,除了一些擴展名。git的.gitattributes可以將所有文件視爲二進制文件,只有少數例外情況?

我願意把所有的文件擴展名是二進制,.PDF的.doc .xls的等等,除了純文本文件,如.txt .RB的.py等

我試過配置.gitattributes像下面來看看如何這可能工作:

# cat .gitattributes 
* binary 
*.txt text 

我想也許在配置文件將此事的順序,但不會出現。通過上述配置,所有文件仍然被視爲二進制文件。

有沒有一種方法來配置.gitattributes或git以任何其他方式來處理所有文件的方式爲二進制,除了少數例外?

更新1:

我試圖下面描述的.gitattributes。有用!

# cat .gitattributes 
*.txt crlf diff 
* binary 


# git diff 
diff --git a/file b/file 
index d929b94..bee5cb1 100644 
Binary files a/file and b/file differ 

diff --git a/file.txt b/file.txt 
index 632ae98..93d22b0 100644 
--- a/file.txt 
+++ b/file.txt 
@@ -1 +1,3 @@ 
Hey this is a .txt file 
+Adding another line 
+A new line 

更新2:

我相信CRLF和文字都是一樣的,即兩個下方配置了.gitattributes是相同的:

# cat .gitattributes 
*.txt crlf diff 
* binary 

# cat .gitattributes 
*.txt text diff 
* binary 

回答

17

binary是宏設置屬性crlf和diff(實際上在這裏將它們設置爲未設置)
請參閱.gitattribute man page中的「USING ATTRIBUTE MACROS」。

屬性設置或取消設置後,如果不能被隨後的規則更改。

所以,你可以嘗試:

* binary 
*.txt crlf diff 

這樣,crlfdiff被設置爲*.txt文件,他們不會被那些同樣*.txt文件中的二進制宏未設置,同時他們也將被取消設置爲所有其他文件。

2009 commit b9d14ff,這些規則應該去:

  • 從一般的人
  • 到具體的人。
    (「後來線覆蓋較早線」)
+1

「屬性設置或取消設置後,如果不能被隨後的規則更改。」非常有用的信息!謝謝。 – caleban 2010-11-24 20:23:16

+1

@caleban:是的,`gitattribute`手冊頁的「EXAMPLE」部分(http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html#_example)給出了一個很好的例子該規則。 – VonC 2010-11-24 20:32:01

0

混帳沒有的「二進制」和「文本」文件的概念。它被定義爲一組屬性,它指定我們應該如何進行合併,差異化,CR/LF轉換,處理空白空間,應用過濾器和其他事物的無數次。

binary和語法等

*.o binary
實際上是宏爲基礎的,即 binary爲展開至一大堆各種屬性的,用於指定合併,版本比較,CR/LF處理等的宏

就我所見,沒有text宏。 binary擴展爲-crlf -diff,因此禁用二進制並返回到文本樣式處理似乎爲crlf diff

相關問題