1

我试图弄清楚为什么有时git会在提交中删除整个文件,然后重新重写所有行。

发生这种情况时,我们无法正确定位所有更改。

例子:

原始文件:

hello world

然后我添加一个新行:

(git的正确行为是:)

hello world + This is a new line

但有时我们在提交中会遇到这种情况:

-hello world +hello world +This is a new line

在这个例子中,只有两行,所以很容易弄清楚发生了什么。但这发生在大文件上。

这种行为的原因可能是什么?此外,在同一个提交中,可能有正确的文件(其中 git 仅识别已更改的行)和不正确的文件。

4

2 回答 2

3

Git 也在跟踪空格行尾更改。所以可能你的一个“隐形”角色改变了。

如果一开始你的文件没有最后一个换行符,然后你添加了一个,有时 git 也会显示这一点;像这样:

-line
\ No newline at end of file
+line
于 2015-11-13T12:06:22.380 回答
1

如果您正在使用git diffgit show查看这些差异,请尝试添加-w参数以忽略所有空白更改。这样,您可以在查看差异时获得所需的效果。

例如:

git diff -w

git show -w
于 2015-11-13T12:19:54.400 回答