你好,
我在一个git仓库中遇到了一个问题,其中一个文件被检测为二进制文件而不是文本文件(通过git dif --stat
检查)。该项目几年前从svn转换过来,所以我无法真正改变过去。我现在尝试将文件转换为utf8(没有bom)文件,但是git告诉我(通过git diff --stat
),它对于git来说是二进制的。
是否有可能在提交后更改文件的基本类型(文本|二进制)?
你好,
我在一个git仓库中遇到了一个问题,其中一个文件被检测为二进制文件而不是文本文件(通过git dif --stat
检查)。该项目几年前从svn转换过来,所以我无法真正改变过去。我现在尝试将文件转换为utf8(没有bom)文件,但是git告诉我(通过git diff --stat
),它对于git来说是二进制的。
是否有可能在提交后更改文件的基本类型(文本|二进制)?
这些评论基本上解释了情况。
如果先前的提交被检测为二进制文件,则Git diff将列出二进制文件。
(在我的情况下,.gitignore是二进制文件,因为当我在Windows cmd/powershell提示符中首次创建它并使用ECHO .vs >> .gitignore添加其他内容时,其中既有英文又有中文)
因此,如果您真的希望下一个diff显示该文件的文本,则可以通过两个提交来解决它。
现在,当Git比较最后一次更改时,它将比较文本与文本,并且在以后比较该文件时也是如此。
git diff
,Git 将会检查当前内容和以前的内容;如果之前的内容“看起来像二进制”,git diff
仍然会显示为“二进制”。只有当两个输入看起来像文本,或者被强制视为文本时,Git 才会尝试将它们作为文本进行比较。我的第一个猜测是你在 Windows 上,并且该文件存储为 UTF-16,因此大多数字符都是带有全零位的上字节对,Git 将其视为二进制。而你替换整个文件只包含内容 'a'。 - torek