Git因換行符不一致導致反覆有修改記錄

!win !發表於2024-07-13

前情


Git(讀音為/gɪt/)是一個開源的分散式版本控制系統,可以有效、高速地處理從很小到非常大的專案版本管理,我公司目前都是基於Git來管理專案程式碼。

坑位


最近剛剛入職一家新公司,本地環境都配好後,我git clone程式碼後,只是簡單的瀏覽了程式碼,發現git就有了修改記錄,而且是整個檔案都是被修改了,一看只是換行符不同。

Why?


這個問題是由於不同的作業系統使用不同的換行符導致的。例如,Windows 系統使用 CRLF(回車換行)作為換行符,而 Linux 和 MacOS 系統使用 LF(換行)作為換行符。

解決方案


我們只要修改Git的配置即可

方案1:

開啟命令列,執行如下命令即可:

Git 有一個全域性配置項叫做 core.autocrlf,它可以控制 Git 在提交和檢出時是否對換行符進行轉換。它有三個可選值:

  • true:表示在提交時將 CRLF 轉換為 LF,在檢出時將 LF 轉換為 CRLF 。這個選項適合 Windows 使用者使用。
  • input:表示在提交時將 CRLF 轉換為 LF,在檢出時不進行轉換。這個選項適合 Linux 和 MacOS 使用者使用。
  • false:表示不進行任何轉換。這個選項適合想保持原始換行符不變的使用者使用。
git config --global core.autocrlf [input | true | false]

方案2:

也可以直接修改.git/config檔案

[core]
  autocrlf = [input | true | false]

方案3:

除了 core.autocrlf 之外,還有一個配置項叫做 core.eol(end of line),它可以指定倉庫中檔案使用哪種換行符。它有三個可選值:

  • lf:表示倉庫中檔案使用 LF 作為換行符。
  • crlf:表示倉庫中檔案使用 CRLF 作為換行符。
  • native:表示倉庫中檔案使用當前作業系統預設的換行符。
git config --global core.eol [lf | crlf | native]

方案4:

也可以直接修改.git/config檔案

[core]
  eol = [lf | crlf | native]

總結

上面4種方案其實是二種方式,一種是怎麼轉換換行符,一種是怎麼規定用哪一種換行符,我選擇的是第一種autocrlf為false,不管換行符問題,其實最的方式是團隊規定統一用一種換行符

相關文章