git crlf換行符的問題解決

2021-07-06 07:51:58 字數 1524 閱讀 1158

## git使用中遇到的換行符問題總結

#### 問題描述

專案組現在用git做版本控制,使用中遇到不同平台下換行符不同造成的問題,windows下的換行符為crlf,linux和max os下換行符是 lf。linux和max os就按說明設定為```core.autocrlfinput```(貌似是預設值),windows設定為```core.autocrlftrue```。可是有時候還是會遇到換行符的問題。review的時候就會發現有的commit的變化是所有行都被刪除重建。

#### git中設定core.autocrlf####

假如你正在windows上寫程式,又或者你正在和其他人合作,他們在windows上程式設計,而你卻在其他系統上,在這些情況下,你可能會遇到行尾結束符問題。這是因為windows使用回車和換行兩個字元來結束一行,而mac和linux只使用換行乙個字元。雖然這是小問題,但它會極大地擾亂跨平台協作。

git可以在你提交時自動地把行結束符crlf轉換成lf,而在簽出**時把lf轉換成crlf。用`core.autocrlf`來開啟此項功能,如果是在windows系統上,把它設定成`true`,這樣當簽出**時,lf會被轉換成crlf:

$ git config --global core.autocrlf true

linux或mac系統使用lf作為行結束符,因此你不想 git在簽出檔案時進行自動的轉換;當乙個以crlf為行結束符的檔案不小心被引入時你肯定想進行修正,把`core.autocrlf`設定成input來告訴git 在提交時把crlf轉換成lf,簽出時不轉換:

$ git config --global core.autocrlf input

這樣會在windows系統上的簽出檔案中保留crlf,會在mac和linux系統上,包括倉庫中保留lf。

如果你是windows程式設計師,且正在開發僅執行在windows上的專案,可以設定`false`取消此功能,把回車符記錄在庫中:

$ git config --global core.autocrlf false

#### 解決方法

1. 修改git設定core.autocrlf=input.檢出時不轉換,提交轉換為lf,這樣可以避免提交windows換行符的情況;

2. 修改eclipse設定 windows>general> workspace 

下 new text file line delimiter 選擇unix。

3. 已有的專案可能已經存在換行符不同的問題需要修正一下。

如果當前開發有多個分支且各分支不同步,需要每個分支進行一次轉換:選中專案 

file> convert line delimiter to > unix,建立新的commit;

如果只有乙個分支或多個分支處於同一節點。可以從master切換乙個新分支,進行第2步的修改操作,然後commit,將此分支合併到所有分支。

4.  

將修改過的分支push到gitlab,其他成員更新**即可。

(ps:由於每個人系統不同或者就是git的問題,可能出現更新完**換行符不變,這時以伺服器上的**為準重新clone乙份最新**即可)

換行符問題

今天,我總算搞清楚 回車 carriage return 和 換行 line feed 這兩個概念的來歷和區別了。在計算機還沒有出現之前,有一種叫做電傳打字機 teletype model 33 的玩意,每秒鐘可以打10個字元。但是它有乙個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個...

window git crlf lf 換行符問題

git config global core.autocrlf inputgit config global core.safecrlf true1 autocrlf引數說明 提交時轉換為lf,檢出時轉換為crlf git config global core.autocrlf true 提交時轉換...

XML換行符的問題

最近要完成乙個功能,將裝置中資料庫中的資料匯出成xml檔案,可以方便的用excel檢視。主要的實現就是qt中的qxmlstreamwriter類。其中有乙個功能就是要求excel中的單元格中的資料過多時,可以換行。一開始的 如下 qxmlstreamwriter xmlwriter xmlwrite...