在不同的操作系統(tǒng)上贱除,使用git提交代碼時(shí)生闲,可能遇到如下提示:
warning: CRLF will be replaced by LF in index.html.
warning: LF will be replaced by CRLF
背景:本人在 Mac下提交html代碼,報(bào)出
warning: CRLF will be replaced by LF in index.html.
無(wú)法提交代碼月幌。
CR為回車符碍讯,LF為換行符。Windows結(jié)束一行用CRLF扯躺,Mac和Linux用LF捉兴。
文本文件所使用的換行符,在不同的系統(tǒng)平臺(tái)上是不一樣的录语。
到此時(shí)倍啥,就在想:為什么提交代碼會(huì)出現(xiàn)這個(gè)問(wèn)題,之前一直使用git怎么沒(méi)有出現(xiàn)過(guò)澎埠;仔細(xì)想了一番虽缕,出現(xiàn)如此提示的原因可能如下:
- 在Mac/Linux下提交html代碼,報(bào)出
warning: CRLF will be replaced by LF in heart/index.html.
是因?yàn)槠盐龋闾峤坏拇a里面包含CRLF方式的換行氮趋,需要轉(zhuǎn)化為Mac/Linux平臺(tái)的換行。
可能的原因:你提交的html代碼江耀,或許你引入了框架凭峡、或者你粘貼了別人博客的代碼,而這些框架/別人博客的代碼决记,是別人在Windows平臺(tái)完成的摧冀,代碼中自然是使用CRLF方式的換行,你copy到你的工程里面,編輯器并不會(huì)自動(dòng)給你轉(zhuǎn)化成你目標(biāo)平臺(tái)(Mac/linux)的換行方式索昂。
ps:可以使用 dos2unix 轉(zhuǎn)換工具來(lái)完成建车,Windows 上 Git bash 客戶端自帶了該工具,手動(dòng)將文件的換行符轉(zhuǎn)化為 LF椒惨。
- 類似的,在windows下提交提交html代碼缤至,報(bào)出
warning: LF will be replaced by CRLF
是因?yàn)椋闾峤坏拇a里面包含LF方式的換行康谆,需要轉(zhuǎn)化為windows平臺(tái)的CRLF換行领斥。
可能的原因:你提交的html代碼,或許你引入了框架沃暗、或者你粘貼了別人博客的代碼月洛,而這些框架/別人博客的代碼,是別人在Mac/linux平臺(tái)完成的孽锥,代碼中自然是使用LF方式的換行嚼黔,你copy到你的工程里面,編輯器并不會(huì)自動(dòng)給你轉(zhuǎn)化成你目標(biāo)平臺(tái)(Windows)的換行方式惜辑。
Git 在設(shè)計(jì)時(shí)就考慮了這一點(diǎn)唬涧,其提供了一個(gè)
autocrlf
的配置項(xiàng),用于在提交和檢出時(shí)自動(dòng)轉(zhuǎn)換換行符盛撑,該配置有三個(gè)可選項(xiàng):
- true: 提交時(shí)轉(zhuǎn)換為 LF碎节,檢出時(shí)轉(zhuǎn)換為 CRLF
- false: 提交檢出均不轉(zhuǎn)換
- input: 提交時(shí)轉(zhuǎn)換為L(zhǎng)F,檢出時(shí)不轉(zhuǎn)換
初次遇到這個(gè)問(wèn)題抵卫,當(dāng)然網(wǎng)上也有最簡(jiǎn)單的解決方式
git config --global core.autocrlf false
#提交和檢出代碼都不轉(zhuǎn)化
不轉(zhuǎn)化意味著狮荔,你使用的目標(biāo)平臺(tái)有一套換行方式,引入的別人的代碼一套方式陌僵,這兩種方式混合并存且不轉(zhuǎn)化,那以后這份代碼在任何平臺(tái)上檢出/提交 都會(huì)有問(wèn)題创坞,因?yàn)樗膿Q行方式總是一部分和使用的平臺(tái)相符碗短,一部分不相符。
因此不推薦使用這種方式题涨,除非你這次提交的東西偎谁,以后幾乎不會(huì)用到/改動(dòng),只用于以后瀏覽纲堵。
要是以后會(huì)用到巡雨,如何處理才好呢?
一句話席函,還是和具體使用的平臺(tái)相關(guān)铐望。
- false表示取消自動(dòng)轉(zhuǎn)換功能。適合純Windows
- true表示提交代碼時(shí)把CRLF轉(zhuǎn)換成LF,簽出時(shí)LF轉(zhuǎn)換成CRLF正蛙。適合多平臺(tái)協(xié)作
- input表示提交時(shí)把CRLF轉(zhuǎn)換成LF督弓,檢出時(shí)不轉(zhuǎn)換。適合純Linux或Mac
1乒验、如果這些代碼愚隧,只在一種平臺(tái)上使用,跟具體平臺(tái)相關(guān)锻全,那只需要把你引入的 別人代碼的換行方式狂塘,換成你使用平臺(tái)的方式即可。轉(zhuǎn)化后鳄厌,在以后提交和檢出代碼都不會(huì)出問(wèn)題荞胡。
2、如果跨平臺(tái)協(xié)作部翘,
例如:A使用Mac/Linux硝训,B使用Windows;
現(xiàn)在B獲取A的代碼新思,B需要在自己的機(jī)器上設(shè)置 git config --global core.autocrlf true
窖梁。
B檢出代碼時(shí),轉(zhuǎn)化成自己Windows方式的CRLF夹囚,提交時(shí)轉(zhuǎn)化為L(zhǎng)F纵刘,和A保持一致。
還有荸哟,最好不要設(shè)置safecrlf
為false假哎,即允許兩種方式并存。