當我在修改後的PHP文件上運行git diff
時,它顯示我正在修改的錯誤行和其他行是「未修改的」(沒有更改),即使我修改了其他線路。Git diff沒有任何意義
一個例子:
這是我對文檔所做的更改:
它僅出現在某些文件和在其他場合,它有時會添加其他線路,但它不標記適當的行刪除。在其他情況下,它只會在文件末尾添加更改,而不會將其標記爲添加項。
在SourceTree,似乎同樣的差異不作任何意義太:
FYI:該文件最初是從Linux服務器下載。
當我在修改後的PHP文件上運行git diff
時,它顯示我正在修改的錯誤行和其他行是「未修改的」(沒有更改),即使我修改了其他線路。Git diff沒有任何意義
一個例子:
這是我對文檔所做的更改:
它僅出現在某些文件和在其他場合,它有時會添加其他線路,但它不標記適當的行刪除。在其他情況下,它只會在文件末尾添加更改,而不會將其標記爲添加項。
在SourceTree,似乎同樣的差異不作任何意義太:
FYI:該文件最初是從Linux服務器下載。
我找到了解決辦法,檢查有問題的文件之後。
似乎給出問題的文件只有行尾(EOL)格式的經典Macintosh CR
。將其與Windows的CR+LF
或UNIX(及其衍生產品,包括OS X)LF
進行對比。將文件轉換爲Windows/UNIX EOL格式,提交固定的EOL文件解決了該問題。
用測試Git存儲庫進行測試證明了我的懷疑。
這可能恰好是跟蹤文件的變化,只支持CR
結合LF
(CR+LF
),而不是單獨CR
(如什麼經典的Mac使用)的Git的方式。
這有時發生的事情時,你的文件與Windows新的線路編碼,在git的是編碼與UNIX的新生產線,這就是爲什麼你migth得到這個錯誤,你必須配置你的行結束到UNIX
編輯:
此鏈接here可能是有用的。就像他在這篇文章中,你可以試着說取決於你的編輯器來:
- 對於Vim的用戶,你都設置開箱!只是不要改變你的 eol設置。對於Emacs用戶,將(setq require-final-newline t)添加到您的.emacs或.emacs.d/init.el文件的 。
- 對於TextMate用戶,您可以安裝Avian Missing Bundle並將TM_STRIP_WHITESPACE_ON_SAVE = true添加到.tm_properties文件中。
- 對於Sublime用戶,請將ensure_newline_at_eof_on_save選項設置爲true。
- 對於RubyMine的,集「確保在保存文件末尾換行」下的「編輯」。
你在本地有什麼操作系統? – Mantas 2015-04-03 08:47:13
@Mantas在Windows上運行。雖然在我的遙控器上,它仍然顯示相同的損壞的差異。 – Skaty 2015-04-03 08:47:41