1. 程式人生 > >git 跨平臺使用檔案換行符設定

git 跨平臺使用檔案換行符設定

今天用Git bash遇到的問題,看了幾個回答之後發現一個比較有價值的,給大家分享一下,其他很多的回答都有很或多或少存在一些弊端。

原回答地址在stackoverflow上,附上鍊接--http://stackoverflow.com/questions/1967370/git-replacing-lf-with-crlf

這裡我把主要的東西提煉一下翻譯成中文供大家參考。

因為文字是有編碼的,比如中文有常用的GBK編碼,日文有Shift_JIS編碼,如果沒有歷史遺留問題,強烈建議使用標準的UTF-8編碼,所有語言使用同一種編碼,既沒有衝突,又被所有平臺所支援。

首先問題出在不同作業系統所使用的換行符是不一樣的,下面羅列一下三大主流作業系統的換行符:

Uinx/Linux採用換行符LF表示下一行(LF:LineFeed,中文意思是換行);

Dos和Windows採用回車+換行CRLF表示下一行(CRLF:CarriageReturn LineFeed,中文意思是回車換行);

Mac OS採用回車CR表示下一行(CR:CarriageReturn,中文意思是回車)。

在Git中,可以通過以下命令來顯示當前你的Git中採取哪種對待換行符的方式

$ git config core.autocrlf

此命令會有三個輸出,“true”,“false”或者“input”

為true時,Git會將你add的所有檔案視為文字問價你,將結尾的CRLF轉換為LF,而checkout時會再將檔案的LF格式轉為CRLF格式。

為false時,line endings不做任何改變,文字檔案保持其原來的樣子。

為input時,add時Git會把CRLF轉換為LF,而check時仍舊為LF,所以Windows作業系統不建議設定此值

解決辦法:

將core.autocrlf設為false即可解決這個問題,不過如果你和你的夥伴只工作於Windows平臺或者Linux平臺,那麼沒問題,不過如果是存在跨平臺的現象的話,還是需要考慮一下。

但當 core autocrlf為true時,還有一個需要慎重的地方,當你上傳一個二進位制檔案,Git可能會將二進位制檔案誤以為是文字檔案,從而也會修改你的二進位制檔案,從而產生隱患。

PS:

附上修改autocrlf的命令,以改為true為例:

$ git config --global core.autocrlf true   #true的位置放你想使autocrlf成為的結果,true,false或者input