当前位置:  开发笔记 > IOS > 正文

Git认为我每次做一个小改动都会重写我的一个文件

如何解决《Git认为我每次做一个小改动都会重写我的一个文件》经验,为你挑选了2个好方法。

我有一个中等大小的Java文件.每次我对我的一个文件BuildTable.java进行更改时,Git都会将其报告为一个巨大的变化,即使只是一两行.BuildTable.java大约有200行,并且此提交中的更改仅更改了一行.

git-diff输出这个:

--- a/src/BuildTable.java
+++ b/src/BuildTable.java
@@ -1 +1 @@
-import java.io.FileNotFoundException;^Mimport java.io.FileReader;^Mimport java.io.InputStreamReader;^Mimport java.io.PushbackReader;^Mimport java.util.ArrayList;^Mimport
\ No newline at end of file
+import java.io.FileNotFoundException;^Mimport java.io.FileReader;^Mimport java.io.InputStreamReader;^Mimport java.io.PushbackReader;^Mimport java.util.ArrayList;^Mimport
\ No newline at end of file

做了git-commit -a之后

Created commit fe43985: better error notifications
 3 files changed, 54 insertions(+), 50 deletions(-)
 rewrite src/BuildTable.java (78%)

Git是否将此文件视为二进制文件?这是一个问题吗?如果是,我该如何解决这个问题?



1> ddaa..:

显然,git不喜欢你的mac风格的行结尾(仅限CR).它的diff算法使用LF作为行分隔符.

修复您的文件以具有Windows样式(CR LF)或unix(仅限LF)行结尾.


所谓的"mac-style"行结尾是Mac上标准的MacOS 9.而且只适用于MacOS.
很遗憾这个答案被降级了四次,而诊断是正确的,正如作者在他的回答中所提到的那样.
OS X使用LF结尾,就像其他所有类型的Unix一样.

2> Paul Wicks..:

为了解决这个问题,我不需要更改任何核心git设置,因为生成的默认行结尾很好,只是这个特定的文件被破坏了.为了修复它,我打开了vim并执行了以下命令

:%s/^M/\r/g

请注意,要键入"^ M",您必须键入ctrl-V然后键入ctrl-M.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有