2016-06-13 158 views
0

我有一個問題來配置Notepad ++:我在Windows中使用Notepad ++來編輯我的代碼。當我在Linux中執行git diff時,tous les行顯示爲已修改。事實上,我確定我打開了這個文件,但是我沒有在記事本中修改它!我認爲這是一個記事本的配置問題,當我在記事本中打開一個文件時,所有的換行符都被改變了。所以git diff會告訴我,我修改了所有行。你能告訴我如何解決它嗎?如何配置我的記事本以使用git diff

+1

所以你說的是行終止? – Droppy

+0

通常,如果所有行都發生改變,它必須與行終止相關:Windows''\ r \ n'與* nix的'\ n'。 Git有一些設置可以修改簽入和簽出之間的行尾。 Notepad ++也可以將所有行結尾類型替換爲所有其他行結尾類型。 – MicroVirus

+0

您是否在Windows和Linux之間使用Git共享您的文件?或者他們都訪問相同的文件系統?你的'git config core.autocrlf'配置是什麼? – Melebius

回答

0

看起來你正在編輯的代碼已經被提交給Unix系統結尾(LF)的Git。 Notepad ++將行結尾轉換爲CRLF,通常在Windows上使用。

您可以通過以下兩種方式之一解決此問題。

如果您只打算在Windows上使用Notepad ++編輯代碼,則可以使用Edit > EOL conversion > UNIX/OSX Format將編輯文件中的所有行結尾轉換爲Unix格式。

否則,您可以將Git配置爲將Unix行結尾檢出爲CRLF,並通過core.autocrlf配置選項將它們提交爲LF。見從下面的documentation摘錄:

如果你正在編寫在Windows和與人誰不(或反之亦然)的工作,你可能會在某個 點運行到行結束的問題。這是因爲Windows在文件中同時使用回車符 和換行字符作爲換行符,而Mac和 Linux系統僅使用換行符。這是一個微妙的但跨平臺工作令人難以置信的煩人的事實;許多編輯在 窗口默默地用CRLF替換現有的LF風格的行結尾,或 當用戶點擊回車鍵時插入兩個行尾字符。

Git可以通過自動將CRLF行結束符轉換爲LF來處理這個問題, 您向索引中添加文件,反之亦然,當它將代碼 簽出到您的文件系統上時。您可以使用 core.autocrlf設置打開此功能。如果你是一個Windows機器上,它設置爲true - 這LF結局轉換成CRLF,當你看看代碼:

$ git config --global core.autocrlf true