2015-11-13 31 views
1

我試圖找出爲什麼有時 git擦除提交中的整個文件,然後重寫所有行,重新一遍。Git重寫文件中的所有行?

發生這種情況時,我們無法正確定位所有更改。

例子:

原始文件:

hello world

然後我添加一個新行:

(GIT的正確行爲是:)

hello world + This is a new line

但有時我們在提交遇到此:

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

在這個例子中,只有兩行,所以它很容易弄清楚發生了什麼事。 但這種情況發生在大型文件上。

這種行爲的原因是什麼? 此外,在同一個提交中,可以有正確的文件(其中git只識別已更改的行)和不正確的文件。

回答

3

Git正在跟蹤空白行結束也會發生變化。所以可能你的一些「隱形」角色發生了變化。

有時候git也會顯示這個,如果最初你的文件沒有最終換行符,然後你添加了一個;像這樣:

-line 
\ No newline at end of file 
+line 
+0

這很可能是這樣,但是這將是糾正這個問題的方法是什麼?更改線路端配置? – andretzermias

+1

這是另一個話題;非常compliated的事情...首先,你應該找出什麼是真正的原因:行結束或空白...你使用Linux和Windows混合,... –

1

如果您正在使用git diffgit show查看這些差異列表,嘗試添加-w參數忽略所有空白的變化。這樣,您可以在查看差異時獲得您要查找的效果。

例如:

git diff -w 

git show -w 
相關問題