1. 程式人生 > >Git LF和CRLF問題解決記錄

Git LF和CRLF問題解決記錄

度孃的答案讓我們設定:git config –global core.autocrlf false;
(我當時看到這個答案的時候呢!也沒有多想,直接就是一頓命令敲下去,然後發現我的問題並沒有解決……繼續糾結。。。)
好了,糾結了一晚上沒有搞定,反而把我的git配置檔案搞的亂七八糟的!接著第二天繼續來……這次學聰明瞭。我們先來看看問題,然後尋找是什麼原因造成的。
我的問題呢!就是我每次在windows下面修改了程式碼然後push給git然後linux下面pull,但是我在linux下面沒有修改過程式碼。下次我同樣在windows下面修改程式碼然後push然後同樣在linux下面pull就會出現那個CRLF的警告然後出現致命錯誤不能pull程式碼需要先push本地修改的程式碼。這就尷尬了,我都沒改程式碼居然提示有修改的檔案需要先提交。。。然後度娘問為什麼出現這個問題(有事多度娘這句話是沒錯的。)然後就找到了問題同時給出了上面的解決方案。其實不能說這個方案是錯誤的,只能說那個方案對於我並沒有理解透徹。
出現這個問題的原因就是Linux系統和windows系統下的換行符不一樣Linux是’\n’既LF,windows下面確實’\r\n’既CRLF。這本來很正常嘛但是坑的就是git的預設設定是push的時候會把CRLF轉換成LF而pull的時候會把LF轉換成CRLF。這就尷尬了!!!所以每次我pull。git就會告訴你你已經有檔案被修改了。(除非沒有換行符)
哦了!問題出現了,原因找到了。接下來就是解決問題了。這個需要慢慢來,不能著急。。。先來根菸!好了繼續我們的爬坑之路。
現在我們首先來了解下git core.autocrlf 的各項配置的意義:
git config –global core.autocrlf true//設定git在push轉換成lf,pull的時候轉換成crlf(其實預設配置就是這個樣子的)
git config –global core.autocrlf false//設定git在push和pull的時候不會進行轉換(這個呢!不會報那個CRLF的錯誤但是你會發現可能會出現錯誤,我就是laravel的routes.php配置的路由跑不了了!!!)
git config –global core.autocrlf input//設定git在push的時候將lf轉換成crlf,pull的時候並不會把crlf轉換成crlf。(這個對我有幫助)
好了,原理我們也清楚了。最後說說我的解決方案!其實很簡單:
windows 下面採用預設的配置。
linux 下面執行命令git config –global core.autocrlf input
這樣我們在windows下面pull的時候會將lf轉換成crlf在push的時候會將crlf轉換成lf在linuxpull的時候我們不會轉換但是提交的時候會將crlf轉換成lf。(其實想想在linux下面設定成git config –global core.autocrlf false應該也是可以的哦!)

(這裡是因為我的前面一頓命令敲下去把自己git的配置檔案全部給整亂了!所以說說我的整理過程)
使用git config –list(注:不要進入你的專案目錄,因為專案目錄也會有git配置的),出現git配置項列表:
這裡寫圖片描述
我們看到有兩個core.autocrlf=true,這種情況下呢你可以選擇不去修改配置檔案,出現這種情況其實就是你自己在後面修改了core.autocrlf的問題。我的情況就是我的配置檔案中有兩個相同的配置項,而且兩個配置項的值還不是一樣的,所以你不管怎麼改都只能改變一個。從而導致我修改的配置好像沒有效果。如果你也是這種情況你可以進入git bash介面:
這裡寫圖片描述
然後vi ~/.gitconfig
這裡寫圖片描述


刪除一個autocrlf選項就可以了。
好了!!!終於可以睡覺了!!!所以今天早上就把這個記錄下。。。然後繼續我們的爬坑之旅。。。