3 回答

TA貢獻1804條經驗 獲得超7個贊
在Windows中獲取LF結尾的正確方法是首先設置core.autocrlf為false:
git config --global core.autocrlf false
如果使用的是msysgit,則需要執行此操作,因為它true在系統設置中將其設置為。
現在,git將不執行任何以規范化結尾的行。如果你想你的文件檢查是標準化的,這樣做:設置text=auto在您的.gitattributes所有文件:
* text=auto
并設置core.eol為lf:
git config --global core.eol lf
現在,您還可以通過運行將單個存儲庫切換到crlf(在工作目錄中?。?。
git config core.eol crlf
完成配置后,您可能希望git規范化repo中的所有文件。為此,請轉到存儲庫的根目錄并運行以下命令:
git rm --cached -rf .
git diff --cached --name-only -z | xargs -n 50 -0 git add -f
如果現在希望git也將工作目錄中的文件標準化,請運行以下命令:
git ls-files -z | xargs -0 rm
git checkout .

TA貢獻2021條經驗 獲得超8個贊
盡管這些都不適合我,但我經常會回到這個答案。就是說,對我來說正確的答案是其他答案的混合體。
我發現有效的方法如下:
git config --global core.eol lf
git config --global core.autocrlf input
對于在設置了這些全局設置之后簽出的回購協議,所有內容都將按照回購協議中的內容進行簽出–希望LF(\n)。任何CRLF都將LF在簽到時轉換為僅。
對于已經簽出的現有倉庫(倉庫中有正確的行尾而不是工作副本),可以運行以下命令來修復它:
git rm -rf --cached .
git reset --hard HEAD
這將從當前目錄()中rm遞歸(r)刪除(),而不提示(-f)除已編輯(--cached)以外的所有文件.。在reset隨后返回所有這些文件到他們自己的真實行結束(匹配什么在回購)的狀態。
如果您需要在回購中修復文件的行尾,我建議使用一種編輯器,該編輯器可以讓您像IntelliJ或Sublime Text一樣批量執行此操作,但是我敢肯定,任何好的軟件都可能會支持這一點。
- 3 回答
- 0 關注
- 725 瀏覽
添加回答
舉報