里面的方法都試過(guò),百度谷歌都翻遍了。https://my.oschina.net/lujian...
走同樣的路,發(fā)現(xiàn)不同的人生
我不知道具體是什么原因,不過(guò)我以前也遇到過(guò)類(lèi)似的情況,有幾點(diǎn)經(jīng)驗(yàn)或許可以參考一下:
不要用msys、cygwin上的git,用git官方提供的。因?yàn)閏ygwin這些上面的git以為是Linux環(huán)境,默認(rèn)utf編碼的,而Windows用的不是utf,這樣add的時(shí)候就不會(huì)識(shí)別成Windows從而不會(huì)給你轉(zhuǎn)碼,導(dǎo)致亂碼。
出現(xiàn)編碼問(wèn)題,不要首先嘗試去修改默認(rèn)配置,而應(yīng)該參考1
不要將不同平臺(tái)的git倉(cāng)庫(kù)直接復(fù)制過(guò)去。git自己已經(jīng)做了很多兼容性的工作了,比如行尾。如果直接復(fù)制過(guò)去的話,git就沒(méi)法修改行尾,然后你git status的時(shí)候,就會(huì)發(fā)現(xiàn)所有的文件都改變了。
嗯,重新用官方的git,默認(rèn)的編碼配置,估計(jì)就不會(huì)有問(wèn)題了。
給你看我用 git bash
的配置吧,不知道哪一句的作用commitencoding
提交和保存在版本庫(kù)里 log 的編碼,如果你不知道保存在庫(kù)實(shí)際的編碼那就沒(méi)辦法了。logoutputencoding
應(yīng)該是交給shell
時(shí)候使用的編碼,如果不相同應(yīng)該會(huì)進(jìn)行轉(zhuǎn)換。gui.encoding
似乎是設(shè)置git bash
使用的編碼,這個(gè)要和logoutputencoding
,我都設(shè)置成utf-8
了。
[i18n]
commitencoding = utf-8
logoutputencoding = utf-8
[gui]
encoding = utf-8
[core]
quotepath = false
[i18n "commit"]
encoding = utf-8