SourceTree 无法显示大文本文件的 GIT 差异(或将其视为二进制文件)

Ale*_*kin 8 git atlassian-sourcetree

我正在尝试使用 GIT 来跟踪对相当大的 XML 文件(大约 3 Mb)的更改。该文件采用 UTF-8 格式,以 CRLF 行结尾(我在 Windows 10 中工作)。但由于某种原因,GIT 一直认为它是二进制文件,并且不显示任何差异。或者只是无法检测到变化。

Sourcetree 中的差异显示消息“未检测到此文件中的任何更改,或者它是一个二进制文件”

我尝试在.gitattributes中显式设置属性,但似乎这不是原因:

 *.xml crlf diff
Run Code Online (Sandbox Code Playgroud)
   git check-attr --all -- sorkin.xml
   sorkin.xml: diff: set
   sorkin.xml: crlf: set 
Run Code Online (Sandbox Code Playgroud)

我发现当我将大文件切成三个较小的部分(小于 1 Mb)时,GIT 会正确显示它们的更改。

计算 diff 时,GIT 对文件大小有限制吗?

Ale*_*kin 20

问题不是 GIT 选项,而是 SourceTree 设置 Tools/Options/Diff。默认情况下,它具有内部差异视图设置 - 文本文件大小限制为 1024Kb。

我将其设置为更高的值,它解决了我的问题。

我错误地解释了 SourceTree 错误消息“未检测到此文件中的任何更改,或者它是一个二进制文件”。但是当我创建长度为 1048576 和 1048577 字节的文本文件并提交它们时,我发现 git diff 命令行有效,而 Atlassian SourceTree 忽略了较大文件的更改。

使用 git diff: git diff commit_hash 1048577.txt而不是正确的语法非常重要git diff 1048577.txt,因为最后一个命令显示了 HEAD 和当前更改之间的差异,这是我误解问题的第二个因素。