3 回答

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

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