2015-04-15 51 views
2

當我做「git status」時,它列出了許多在實際中被修改的文件,但它們不是。它將所有行顯示爲已刪除,然後在差異報告結束時再次添加相同的行。爲什麼Git狀態顯示許多文件在未被修改時被修改?

我可以使用Windiff檢查文件是否完全一樣。事實上,我一直在使用git幾個月沒有問題,今天突然出現了這個問題。我從幾個月前沒有修改過大部分文件。

我使用Windows和SourceTree,但也使用git命令行。兩者都顯示相同的問題。

我嘗試的第一件事是放棄所有。沒有任何反應,「修改」的文件不會消失。然後恢復,一樣。然後,我雖然關於某種腐敗,所以我刪除了.git/index文件,然後,「git reset」。問題現在最糟糕,我有30個「修改」文件,現在我有「1360」。我檢查了硬盤,它很好。

我不能簡單地從遠程克隆它,因爲我有本地分支。

順便說一句,其他存儲庫我有其他項目工作正常。

我首先關心的是知道發生了什麼。我完全迷失了。

UPDATE

,並不是與\ r \ n行的問題。我沒有打開任何文件。 Windiff顯示沒有區別。此外,我刪除了分支,然後從遠程存儲庫中檢出它,即使放棄所有更改或恢復它們,「修改的」文件仍然存在。 另外,它不僅僅是SourceTree,我從命令行使用Git。

+0

這應該對你有幫助:http://stackoverflow.com/a/15967109/1257504 - 似乎是Windows/SourceTree的特定問題。 –

+0

是否有可能使用Windows文本編輯器來打開保存在unix系統上的文本文件,該文本編輯器用Windows行尾('\ r \ n')替換了unix行尾('\ n')?如果你有unix工具,你可以使用'od -c file.ext'來獲取內容的轉儲以確認,並且你可以使用'dos2unix'(我認爲可以在cygwin中獲得)等工具來轉換回來的東西到git記得的東西。 – ghoti

+0

正如@ ghoti提到的,​​這很可能是一個結束問題。您的本地git配置上的行結束類型是否設置爲「auto」,或者您是否簡單地接受行結束作爲存儲庫出來?另外,您是否使用編輯器觸摸這些文件,如果重新保存文件,編輯器可能會執行一些製表符/空格轉換? –

回答

1

第一個想法:縮進。當您在IDE中導入項目並嘗試自動重新縮進它時,所有行都可能因縮進而更改。

第二個想法:行結束。有些IDE可能會在每行添加一行不同的行,所以git將這看作是所有行的差異。

希望能幫到你。

相關問題