Git在不同環境換行符設定

2022-03-23 13:51:05 字數 2131 閱讀 5431

首先我們在eclipse檢視兩個環境檔案的換行符區別:

產生背景

關於「回車」(carriage return)和「換行」(line feed)這兩個概念的來歷和區別。在計算機還沒有出現之前,有一種叫做電傳打字機(teletype model 33)的玩意,每秒鐘可以打10個字元。但是它有乙個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字元。要是在這0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。

於是,研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字元。乙個叫做「回車」,告訴打字機把列印頭定位在左邊界;另乙個叫做「換行」,告訴打字機把紙向下移一行。

後來,計算機發明了,這兩個概念也就被般到了計算機上。那時,儲存器很貴,一些科學家認為在每行結尾加兩個字元太浪費了,加乙個就可以。於是,就出現了分歧。unix系統裡,每行結尾只有「《換行》」,即「\n」;windows系統裡面,每行結尾是「 《回車》《換行》」,即「\r\n」;mac系統裡,每行結尾是「《回車》」。乙個直接後果是,unix/mac系統下的檔案在windows裡開啟的話,所有文字會變成一行;而windows裡的檔案在unix/mac下開啟的話,在每行的結尾可能會多出乙個^m符號。

windows建立的檔案是 \n\r結束的, 而linux等類unix作業系統是\n結束的。所以unix的文字到windows會出現換行丟失(ultraedit這類軟體可以正確識別); 而反過來就會出現^m的符號了

windows等作業系統用的文字換行符和unix/linux作業系統用的不同,windows系統下輸入的換行符在unix/linux下不會顯示為「換行」,而是顯示為 ^m 這個符號(這是linux等系統下規定的特殊標記,佔乙個字元大小,不是 ^ 和 m 的組合,列印不出來的)。linux下很多文字編輯器(命令列)會在顯示這個標記之後,補上乙個自己的換行符,以避免內容混亂(只是用於顯示,補充的換行符不會寫入檔案,有專門的命令將windows換行符替換為linux換行符)。 unix/linux系統下的換行符在windows系統的文字編輯器中會被忽略,整個文字會亂成一團。

正文

正因為有以上區別,才會有接下來說的回車換行轉換的問題。現在很多公司都是windows的開發環境,linux的伺服器,git預設有乙個自動轉換回車換行的功能,但是這個功能有時候會調皮,這樣一來就會導致我們的**出現一些莫名其妙的問題,所以為了解決這個問題,我們就需要將開發環境的回車換行設定成unix風格,並且禁止git的自動轉換功能。下面我們來看看如何設定:

首先開啟eclipse的屬性面板,找到team,然後是git,切換到system settings選項卡,點選browse。

選擇git的安裝目錄(如:c:\program files (x86)\git)

最後將autocrlf屬性設定為false即可。

其次配置eclipse:

然後選中new text file line delimiter下的 other -> unix。 

然後windows -> preference -> general -> editors -> text editors:

然後勾選show whitespace characters核取方塊。 

ok,這樣結合之前對git的設定,這樣就可以保證你的**不會因為換行符轉換給你添麻煩啦。不斷積累軟體的使用技巧,讓我們的工具變得更智慧型,更懂你的心。

git 換行問題 git 換行符問題

最近在windows下使用git,發現不時沒有修改過的檔案要提交,對比發現檔案全部修改,但找不到不一樣的地方,baidu後懷疑是換行符的問題,因為windows和linux的換行符不一樣,這個和git客戶端配置有關係,如果每個人客戶端配置不一樣同樣會出現該問題.關於不同系統的換行符問題 unix l...

windows下Git的換行符設定

專案要用到labview,其程式原始檔vi是非文字的,擔心git在納入時會對 0d0a r n 或者 0a n 這些文字檔案中的換行符產生影響,遂作如下實驗。1 提交時autocrlf為true step1.建立3個vi檔案並提交。檔案內容分別為 十六進製制格式 檔名 內容 0a.vi 31 0a ...

git 換行問題 Git 處理換行符問題

ps 最近又換回了 linux mint,作為乙個 linux 桌面黑,有點尷尬。換行符是 nux 與 windows 系及其他系的各種不相容問題的代表之一,於是,在不同平台使用 git 時經常碰到 git status 列出一大串修改過的檔案,git diff 檢視一下其實只是換行符問題。不多扯了...