git - 为什么 Git 将此文本文件视为二进制文件?

标签 git binary

我想知道为什么 git 会告诉我这个?

$ git diff MyFile.txt
diff --git a/MyFile.txt b/MyFile.txt
index d41a4f3..15dcfa2 100644
Binary files a/MyFile.txt and b/MyFile.txt differ

它们不是文本文件吗?

我已经检查了 .gitattributes 并且它是空的。为什么我会收到此消息?,我无法像以前那样获得差异

已添加:

我注意到文件权限中有一个@,这是什么?,这可能是原因吗?

$ls -all
drwxr-xr-x   5 nacho4d  staff    170 28 Jul 17:07 .
drwxr-xr-x  16 nacho4d  staff    544 28 Jul 16:39 ..
-rw-r--r--@  1 nacho4d  staff   6148 28 Jul 16:15 .DS_Store
-rw-r--r--@  1 nacho4d  staff    746 28 Jul 17:07 MyFile.txt
-rw-r--r--   1 nacho4d  staff  22538  5 Apr 16:18 OtherFile.txt

最佳答案

这只是意味着当 git 检查文件的实际内容时(它不知道任何给定的扩展名不是二进制文件 - 如果你想告诉你可以使用属性文件它明确 - 请参阅手册页)。

检查了文件的内容后,它发现了不是基本 ascii 字符的内容。作为 UTF16,我希望它会有“有趣”的字符,所以它认为它是二进制的。

如果文件有国际化 (i18n) 或扩展字符格式,有一些方法可以告诉 git。我对设置它的确切方法还不够了解 - 您可能需要 RT[Full]M ;-)

编辑:快速搜索 SO 发现 can-i-make-git-recognize-a-utf-16-file-as-text这应该给你一些线索。

关于git - 为什么 Git 将此文本文件视为二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6855712/

相关文章:

git - 如何加快从映射网络驱动器中获取 git 的速度

git - 如何让 Git 忘记已跟踪但现在位于 .gitignore 中的文件?

merge 冲突后git更改change-id的位置

php - 将 double 转换为 Pascal 6 字节(48 位)实数格式

algorithm - 大多数二进制组合来自 4 位,每位只有一个变化

python - 使用gitpython解析git日志

git - 无法使用 git 扩展加载我的私钥

c - Sobel Operator C - 边缘检测出错

binary - 以可变数量填充 elixir 中的二进制文件

string - Scala:替换字符串中位置 i 处的字符