CRLF和LF在跨平臺(tái)工作時(shí)候帶來的煩惱以及解決方法

在使用git提交代碼時(shí)候,有時(shí)候會(huì)遇到一個(gè)問題,就是自己明明只修改了其中幾行,提交上去以后發(fā)現(xiàn)整個(gè)文件都被修改了,在設(shè)置了格式風(fēng)格以后還會(huì)有提交不上去的情況,這個(gè)時(shí)候經(jīng)常讓人摸不到頭腦,其實(shí)就是CRLF和LF在作怪

CRLF LF CR 都是什么意思:

  • CRLF: 是carriagereturnlinefeed的縮寫。中文意思是回車換行。

  • LF: 是line feed的縮寫,中文意思是換行。

  • CR: 是carriagereturn的縮寫。中文意思是回車。

簡單的換行回車為什么會(huì)引出這么多的問題呢,關(guān)鍵在于操作系統(tǒng)之間的分歧:

早期的mac系統(tǒng)使用CR當(dāng)做換行,現(xiàn)在也已經(jīng)統(tǒng)一成了LF

Unix(包含現(xiàn)在大量使用的linux)系統(tǒng)使用LF

windows系統(tǒng)使用LFCR當(dāng)做換行(自作聰明的兼容性??)

也正是因?yàn)椴煌到y(tǒng)的分歧,在多人協(xié)作共同開發(fā)的時(shí)候,可能導(dǎo)致提交代碼時(shí)候產(chǎn)生問題。

解決方法:

Android Studio內(nèi)部可以設(shè)置不同模式,具體位置在setting-->搜索code style見下圖:

設(shè)置格式

其中有四個(gè)選項(xiàng)System-Dependent LF CR CRLF,默認(rèn)是System-Dependent,也就是根據(jù)你是什么系統(tǒng)選擇什么類型,如果想要自定義的話可以在這里設(shè)置,以后創(chuàng)建的新代碼也默認(rèn)用設(shè)置的方式

而如果想單獨(dú)修改某個(gè)文件的類型,也可以在右下角進(jìn)行修改,見下圖:

單獨(dú)修改某個(gè)文件

跨平臺(tái)合作時(shí)候的解決方式:

當(dāng)我們使用git庫提交代碼的時(shí)候,有的人可能使用mac,有的人使用linux,有的人使用windows,不同的開發(fā)環(huán)境如果都是按照自己系統(tǒng)的方式任意修改換行類型,難免會(huì)讓代碼庫整體混亂或者產(chǎn)生許多沒有必要的代碼更新

那么解決該問題的方式有:core.autocrlf命令

git為了防止以上問題擾亂跨平臺(tái)合作開發(fā),使用命令可以轉(zhuǎn)化LF和CRLF

具體體現(xiàn)為:

  • git config --global core.autocrlf true

Git可以在你push時(shí)自動(dòng)地把行結(jié)束符CRLF轉(zhuǎn)換成LF,而在pull代碼時(shí)把LF轉(zhuǎn)換成CRLF。用core.autocrlf來打開此項(xiàng)功能,如果是在Windows系統(tǒng)上,把它設(shè)置成true,這樣當(dāng)簽出代碼時(shí),LF會(huì)被轉(zhuǎn)換成CRLF

  • git config --global core.autocrlf input

Linux或Mac系統(tǒng)使用LF作為行結(jié)束符;當(dāng)一個(gè)以CRLF為行結(jié)束符的文件不小心被引入時(shí)你肯定想進(jìn)行修正,把core.autocrlf設(shè)置成input來告訴 Git 在push時(shí)把CRLF轉(zhuǎn)換成LF,pull時(shí)不轉(zhuǎn)換

  • git config --global core.autocrlf false

在本地和代碼庫中都保留CRLF,無論pull還是push都不變,代碼庫什么樣,本地還是什么樣子

當(dāng)然在多人跨平臺(tái)工作時(shí)候,最好還是約定使用LF,還是CRLF,然后不同系統(tǒng)進(jìn)行對(duì)應(yīng)的設(shè)置,這樣是工作規(guī)范,也有利于提高工作效率,希望以上可以幫助大家。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容