2010-06-24 67 views
4

我在我的工作場所的Windows上的CVS存儲庫內部本地使用cygwin-git,以便至少獲得dvcs的一些優勢。我的問題是,git diff差不多顯示了diff中的整個文件。它通常是這樣的:Git和大量的空白問題

+ source code line... 
- source code line... 

(額外加號和減號,因爲這麼被轉換一個正/負號來的子彈點)

如果我做了git diff --ignore-all-space,我可以看到相關變化代碼,但提交是不必要的大,因爲它包含所有的變化。

在CVS裏面使用git repo的全部想法是,做原型工作,然後我可以選擇性地合併到CVS中會更容易。但是如果每個第二行顯示在差異中,則選擇性合併是不可能的。請幫忙!

P.S 我讀過一些SO上的其他空白線程,我將core.whitespace設置爲-trailing-spacecore.autocrlf設置爲true。但是,這些設置似乎沒有任何區別。


爲了進一步闡述這個問題,那git diff --ignore-all-space怎麼可以忽略這個問題呢?我可以做什麼設置,以便git commit可以做同樣的事情?幫助將不勝感激!

+0

'core.autocrlf'設置爲'true'?它應該設置爲'false':http://stackoverflow.com/questions/2333424/distributing-git-configuration-with-the-code/2354278#2354278 – VonC 2010-06-24 14:12:59

+0

好吧,將其設置爲false。仍然沒有區別。 – vedang 2010-06-24 14:17:23

+0

我對類似的空白錯誤和部分解決方案感到沮喪,並且編寫了一個靈活且功能完整的實用程序,它可以修復**或**簡單報告混淆版本控制系統的空白錯誤:[Github上的Whitespace Total Fixer](https: //github.com/dlenski/wtf)(道歉,如果這太自我宣傳) – 2014-08-30 23:01:43

回答

1

固定它。問題在於CVS和git使用不同的eol標準化。由於這個原因,git-diff顯示出如此多的變化。此修復程序是在的根目錄,一個.gitattributes文件與條目,如下所示:

* text=auto

git-attributes頁:

如果你想用一個 源代碼管理互操作系統 強制執行行結束標準化,或者 您只需要將 存儲庫中的所有文本文件歸一化,但您應該將文本屬性 設置爲「自動」爲全部文件。