Git 重写文件中的所有行?
Git Rewrites all lines in a file?
我想弄清楚为什么 有时 git 在一次提交中擦除整个文件,然后重写所有行,从头再来。
发生这种情况时,我们无法正确定位所有更改。
示例:
原文件:
hello world
然后我添加一个新行:
(git 的正确行为是:)
hello world
+ This is a new line
但有时我们会在提交中遇到这种情况:
-hello world
+hello world
+This is a new line
在这个例子中,只有两行,所以很容易弄清楚发生了什么。
但这种情况发生在大文件上。
这种行为的原因可能是什么?
此外,在同一提交中,可能存在正确的文件(其中 git 仅识别更改的行)和不正确的文件。
Git 也在跟踪 whitespace 或 line ending 更改。所以可能您的 "invisible" 个字符之一发生了变化。
有时 git 如果一开始您的文件没有最后的换行符然后又添加了一个,也会显示此信息;像这样:
-line
\ No newline at end of file
+line
如果您使用 git diff
或 git show
查看这些差异,请尝试添加 -w
参数以忽略所有空格更改。这样,您可以在查看差异时获得您正在寻找的效果。
例如:
git diff -w
git show -w
我想弄清楚为什么 有时 git 在一次提交中擦除整个文件,然后重写所有行,从头再来。
发生这种情况时,我们无法正确定位所有更改。
示例:
原文件:
hello world
然后我添加一个新行:
(git 的正确行为是:)
hello world
+ This is a new line
但有时我们会在提交中遇到这种情况:
-hello world
+hello world
+This is a new line
在这个例子中,只有两行,所以很容易弄清楚发生了什么。 但这种情况发生在大文件上。
这种行为的原因可能是什么? 此外,在同一提交中,可能存在正确的文件(其中 git 仅识别更改的行)和不正确的文件。
Git 也在跟踪 whitespace 或 line ending 更改。所以可能您的 "invisible" 个字符之一发生了变化。
有时 git 如果一开始您的文件没有最后的换行符然后又添加了一个,也会显示此信息;像这样:
-line
\ No newline at end of file
+line
如果您使用 git diff
或 git show
查看这些差异,请尝试添加 -w
参数以忽略所有空格更改。这样,您可以在查看差异时获得您正在寻找的效果。
例如:
git diff -w
git show -w