天天看點

GitLab、CRLF(/r/n)、CRLF(/r/n)、CRLF(/r/n)處理

在windows和linux混合開發的過程中,使用git管理代碼,會出現一些莫名的錯誤,今天說的這個是gitlab的一個大坑,看到大神們寫的文章後,我不啰嗦直接給問題和解決方案。如下:

問題原因:在windows環境下預設的換行為CRLF(/r/n),在linux環境下預設的為LF(/n),在Mac環境下預設的為CR(/r),開發過程中git有點聰明過頭了,自己會預設自動轉換換行

問題描述:然後在以linux為伺服器的時候,就會出現換行錯誤

解決方案:綜合各位大神的解決方案,最直白的方式,(LZ的開發環境為windows)打開指令視窗全局修改git即可,指令如下:

     git config --global core.autocrlf false

   git config --global core.safecrlf true

Windows:(true)

MAC/Linux:(input)

core.autocrlf

true // 表示自動更換crlf,windows下如果checkout是\n,則自動換為\r\n,在送出時在自動換回\n

input // 自動把\r\n換為\n

false // 就是不作處理

core.safecrlf

true // 禁止送出混合\n和\r\n的檔案

false // 允許送出

warn // 送出時産生警告

Git可以在你送出時自動地把行結束符CRLF轉換成LF,而在簽出代碼時把LF轉換成CRLF。用

core.autocrlf

來打開此項功能,如果是在Windows系統上,把它設定成

true

,這樣當簽出代碼時,LF會被轉換成CRLF:

Linux或Mac系統使用LF作為行結束符,是以你不想 Git 在簽出檔案時進行自動的轉換;當一個以CRLF為行結束符的檔案不小心被引入時你肯定想進行修正,把

core.autocrlf

設定成input來告訴 Git 在送出時把CRLF轉換成LF,簽出時不轉換:

這樣會在Windows系統上的簽出檔案中保留CRLF,會在Mac和Linux系統上,包括倉庫中保留LF。

如果你是Windows程式員,且正在開發僅運作在Windows上的項目,可以設定

false

取消此功能,把回車符記錄在庫中: