Git操作中crlf和lf衝突問題

2021-10-05 09:53:40 字數 1213 閱讀 8355

多人參與專案開發的時候,經常會遇到**格式化不一致,在提交的時候出現很多衝突的情況。其中換行符衝突就是一種,在不同的系統平台上是不一樣的。unix/linux 使用的是 0x0a(lf),早期的 mac os 使用的是 0x0d(cr),後來的 os x 在更換核心後與 unix 保持一致了。但 dos/windows 一直使用 0x0d0a(crlf) 作為換行符。所以會出現使用mac的開發者修改的**中是lf換行,windows使用者使用的crlf換行符,總是互相影響。還有乙個原因是,git預設配置了autocrlf為true,也就是說預設所有**都會被提交成了crlf,但是如果不同開發者自己配置的autocrlf配置不一致(比如,input或者false),就會出現總是互相覆蓋的情況。以下是解決換行符衝突的解決方案:

1、編輯器統一

a. 修改git全域性配置,禁止git自動將lf轉換成crlf, 命令:

git config --global core.autocrlf false
b. 修改編輯器的使用者配置,例如vscode

"files.eol": "\n", // 檔案換行使用lf方式
2、git方式統一

git提交的時候,檔案中的換行符必須是lf,如果不是不能提交。

# 提交時轉換為lf,檢出時不轉換

git config --global core.autocrlf input

# 拒絕提交包含混合換行符的檔案

git config --global core.safecrlf true

3、editorconfig

主流編輯器都支援editorconfig,配置end_of_line後,你編輯的**會自動轉化為對應的換行符。當然你需要將autocrlf關閉,防止再次被轉換成其他格式,

# 取值包括 crlf,lf,cr

end_of_line = lf

# 提交檢出均不轉換

git config --global core.autocrlf false

4、prettier

prettier是目前非常流行的**格式化工具,提供了endofline來支援格式化換行符。

# 提交檢出均不轉換

git config --global core.autocrlf false

git 換行符LF與CRLF轉換問題

在各作業系統下,文字檔案所使用的換行符是不一樣的。unix linux 使用的是 0x0a lf 早期的 mac os 使用的是0x0d cr 後來的 os x 在更換核心後與 unix 保持一致了。但 dos windows 一直使用 0x0d0a crlf 作為換行符。git提供了乙個 換行符自...

git 換行符LF與CRLF轉換問題

在各作業系統下,文字檔案所使用的換行符是不一樣的。unix linux 使用的是 0x0a lf 早期的 mac os 使用的是0x0d cr 後來的 os x 在更換核心後與 unix 保持一致了。但 dos windows 一直使用 0x0d0a crlf 作為換行符。git提供了乙個 換行符自...

git 換行符LF與CRLF轉換問題

git config global core.autocrlf false git config global core.safecrlf true 含義 autocrlf 提交時轉換為lf,檢出時轉換為crlf git config global core.autocrlf true 提交時轉換為...