最近在windows下使用git,發現不時沒有修改過的檔案要提交,對比發現檔案全部修改,但找不到不一樣的地方,baidu後懷疑是換行符的問題,因為windows和linux的換行符不一樣,這個和git客戶端配置有關係,如果每個人客戶端配置不一樣同樣會出現該問題.
關於不同系統的換行符問題:
unix/linux : 0x0a(lf), mac os:0x0d(cr),後來的 os x 在更換核心後與 unix 保持一致了。
dos/windows : 0x0d0a(crlf)作為換行符。
關於編碼和換行符設定在安裝「git for windows」的時候,在「configuing the line ending conversions」頁面其實已經給出了提示
說明裡已經標的很清楚了:
1.checkout windows-styl,commit unix-style line endings
簽出時lf轉為crlf core.autocrlf=true
2.checkout as-is ,commit-unix-style line endings
簽出時不改變任何內容,提交時crlf替換為lf core.autocrlf=input
3.checkout as-is,commit as-is
簽出簽入都不做任何轉換保持原樣 core.autocrlf=false
指令設定
1.修改git設定 core.autocrlf=input.檢出時不轉換,提交轉換為lf,這樣可以避免提交windows換行符的情況.如果是在當前倉庫要求 把--global去掉即可。
git config --global core.autocrlf input
2.拒絕提交包含混合換行符的檔案
git config --global core.safecrlf true
tortoisegit設定:
由於使用的是vs比較無法看到換行符效果這裡使用tortoisegit進行比較,在比較視窗的右下角可以看到編碼 換行格式等資訊
測試環境win10+vs2013+tfs2015+git 2.10.1
在vs2015中設定後依然無法提交的問題,直接全部不檢測不轉換(只在windows單平台的時候可以這樣操作哦)
git config --global core.autocrlf falsegit config--global core.safecrlf false
原文參考:
git 換行問題 Git 處理換行符問題
ps 最近又換回了 linux mint,作為乙個 linux 桌面黑,有點尷尬。換行符是 nux 與 windows 系及其他系的各種不相容問題的代表之一,於是,在不同平台使用 git 時經常碰到 git status 列出一大串修改過的檔案,git diff 檢視一下其實只是換行符問題。不多扯了...
Git 換行符自動轉換問題
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!以前都是在linux上工作,所以在使用git的時候沒有碰到檔案行分隔符的問題,現在突然轉到windows上使用git,發現原來是unix檔案行結束符的檔案在使用git diff的時候顯示檔案所有行都被修改。導致這個問題的原因是git自作聰明的 換行...
換行符問題
今天,我總算搞清楚 回車 carriage return 和 換行 line feed 這兩個概念的來歷和區別了。在計算機還沒有出現之前,有一種叫做電傳打字機 teletype model 33 的玩意,每秒鐘可以打10個字元。但是它有乙個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個...