git換行符自動轉換導致整個檔案被修改的解決方案

2021-07-22 14:36:52 字數 923 閱讀 1650

不少開發者可能遇到過這個問題:從git上拉取服務端**,然後只修改了一處地方,準備提交時,用diff軟體檢視,卻發現整個檔案都被修改了。這是git自動轉換換行符導致的問題。

不同作業系統使用的換行符是不一樣的。unix/linux使用的是lf,mac後期也採用了lf,但windows一直使用crlf【回車(cr, ascii 13, \r) 換行(lf, ascii 10, \n)】作為換行符。而git入庫的**採用的是lf格式,它考慮到了跨平台協作的場景,提供了「換行符自動轉換」的功能:如果在windows下安裝git,在拉取檔案時,會自動將lf換行符替換為crlf;在提交時,又會將crlf轉回lf。但是這個轉換是有問題的:有時提交時,crlf轉回lf可能會不工作,尤其是檔案中出現中文字元後有換行符時。

1.禁用git的自動換行功能:

在本地路徑c:\ users\ [使用者名稱] \ .gitconfig下修改git配置[core],如果沒有就直接新增上去:

[core]

autocrlf = false

filemode = false

safecrlf = true

git bash命令列也可以修改,最終也是修改.gitconfig配置檔案:

分別執行:

git config --global core.autocrlf false

git config --global core.filemode false

git config --global core.safecrlf true

2.配置ide開發環境,將它的換行格式指定為lf,以android studio為例:

git換行符自動轉換

將專案從svn上遷移到git遇到了乙個問題,就是git clone專案,發現金鑰之類的檔案比原來要大了,金鑰檔案也沒有辦法使用了。後來發現 當你clone檔案時,git試圖將unix換行符 lf 替換為windows的換行符 crlf 當你在提交檔案時,它又試圖將crlf替換為lf。解決這個問題很簡...

Git 換行符自動轉換問題

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!以前都是在linux上工作,所以在使用git的時候沒有碰到檔案行分隔符的問題,現在突然轉到windows上使用git,發現原來是unix檔案行結束符的檔案在使用git diff的時候顯示檔案所有行都被修改。導致這個問題的原因是git自作聰明的 換行...

GIT 自動轉換行符的案例

在windows上安裝git客戶端後,預設情況下,git clone 專案到windows本地,git會強制將檔案的換行符轉成ctrl,而不是lf。我們再次使用git push的時候,換行符又會自動轉換成lf,再傳到github上。這樣你可能會誤以為自己的檔案換行符被編輯器修改為ctrl,反覆在編輯...