我特别需要git将大多数文件扩展名视为二进制文件,除了一些扩展名。
我想将所有文件扩展名视为二进制文件,.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和text是相同的,即.gitattributes的以下两个配置是相同的:
# cat .gitattributes
*.txt crlf diff
* binary
# cat .gitattributes
*.txt text diff
* binary
答案 0 :(得分:19)
binary
是一个宏设置属性crlf和diff(实际上在这里取消设置)
请参阅USING ATTRIBUTE MACROS中的“.gitattribute
man page”。
设置或取消设置属性后,如果后续规则无法更改。
所以你可以试试:
* binary
*.txt crlf diff
这样,crlf
和diff
被设置为*.txt
个文件,对于那些相同的*.txt
文件,它们不会被二进制宏取消设置,而它们将会所有其他文件都没有设置。
从2009 commit b9d14ff开始,这些规则应该是:
答案 1 :(得分:1)
git没有“二进制”和“文本”文件的概念。它全部被定义为一组属性,它们指定我们应该如何进行合并,差异,CR / LF转换,处理空格,应用滤波器和其他数量的东西。
binary
和语法一样
*.o binary
实际上是基于宏的,即binary
是一个宏,它扩展到指定合并,差异,CR / LF处理等的各种属性。
据我所知,没有text
宏。 binary
扩展为-crlf -diff
,因此禁用二进制文件并返回文本样式处理似乎是crlf diff
。