问题描述
我正在尝试使用GIT来跟踪对相当大的XML文件(大约3 Mb)的更改。该文件的格式为UTF-8,CRLF行结尾(我在Windows 10中工作)。但是由于某种原因,GIT一直认为它是二进制文件,并且不显示任何差异。还是无法检测到更改。
Sourcetree中的差异显示消息“未检测到此文件中的更改,或者它是一个二进制文件”
我试图在 .gitattributes 中显式设置属性,但这似乎不是原因:
var response = await _httpClient.SendAsync(request);
try
{
response.EnsureSuccessstatusCode();
data = await response.Content.ReadFromJsonAsync<Abc>();
return data;
}
catch (HttpRequestException ex) when (ex.StatusCode = 404) ----how to check 404 error?
{
throw;
}
catch (HttpRequestException ex) when (ex.StatusCode == 503)
{
throw;
}
*.xml crlf diff
我发现将大文件切成三个较小的文件(小于1 Mb)时,GIT正确显示了它们的更改。
计算差异时,文件大小是否存在GIT限制?
解决方法
问题不是GIT选项,而是SourceTree设置工具/选项/差异。默认情况下,它具有内部“差异视图”设置-1024Kb文本文件的大小限制。
我将其设置为更高的值,它解决了我的问题。
我错误地解释了SourceTree错误消息“此文件未检测到更改,或者它是二进制文件”。但是,当我创建一个长度为1048576和1048577字节的文本文件并将其提交时,我发现git diff命令行有效,而Atlassian SourceTree忽略了对较大文件的更改。
对git diff使用正确的语法很重要:
git diff commit_hash 1048577.txt
而非git diff 1048577.txt
,因为最后一条命令显示HEAD与当前更改之间的差异,这是我误解问题的第二个因素。