2015-04-03 72 views
1

當我在修改後的PHP文件上運行git diff時,它顯示我正在修改的錯誤行和其他行是「未修改的」(沒有更改),即使我修改了其他線路。Git diff沒有任何意義

一個例子: git diff result

這是我對文檔所做的更改: enter image description here

它僅出現在某些文件和在其他場合,它有時會添加其他線路,但它不標記適當的行刪除。在其他情況下,它只會在文件末尾添加更改,而不會將其標記爲添加項。

在SourceTree,似乎同樣的差異不作任何意義太: enter image description here

FYI:該文件最初是從Linux服務器下載。

+0

你在本地有什麼操作系統? – Mantas 2015-04-03 08:47:13

+0

@Mantas在Windows上運行。雖然在我的遙控器上,它仍然顯示相同的損壞的差異。 – Skaty 2015-04-03 08:47:41

回答

0

我找到了解決辦法,檢查有問題的文件之後。

似乎給出問題的文件只有行尾(EOL)格式的經典Macintosh CR。將其與Windows的CR+LF或UNIX(及其衍生產品,包括OS X)LF進行對比。將文件轉換爲Windows/UNIX EOL格式,提交固定的EOL文件解決了該問題。

用測試Git存儲庫進行測試證明了我的懷疑。

這可能恰好是跟蹤文件的變化,只支持CR結合LFCR+LF),而不是單獨CR(如什麼經典的Mac使用)的Git的方式。

0

這有時發生的事情時,你的文件與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的,集「確保在保存文件末尾換行」下的「編輯」。
+0

嗯,有趣。我發現這是其他方法,問題中的這些文件有Unix或Macintosh EOL,而不是Windows。 – Skaty 2015-04-03 09:02:08

+0

錯誤在文件末尾沒有新行似乎文件預計在文件末尾有一個額外的空白行。 – Hooli 2015-04-03 09:09:53

+0

這個答案不能解釋爲什麼他的其他變化沒有在差異中顯示。 – 2015-04-03 18:22:37