解决 MSYSGIT 的中文问题

自从决定从 bzr 转向 git 以来,我开始逐个地通过 Tailor 工具把我的 bzr 仓库转换成为 git 仓库。本来在 Linux 下转换得好好的,log 什么的都没有丢失,中文文件名也都没问题。但是,但是当我尝试把 Linux 下建的 git 仓库 clone 到 Windows 系统以后,git 却提示 “Invalid Argument”错误,不能检出中文文件名的文件,十分地让人恼火。

经过无数的 Google 以后,我发现非英语的 git 用户都遇到过了这个问题,原因据我推测应该是 Linux 上用 UTF-8 编码的中文文件名似乎 git 没有做任何处理就直接丢给了 Windows。在 msysgit 的项目主页上能够找到这个 bug 记录:http://code.google.com/p/msysgit/issues/detail?id=80,里面有无数人的抱怨,但这个 bug 优先级居然是“Priority-Low”?!

不过细心的话也可以在那个 bug 页面里发现问题的解决办法:有个日本人已经解决了此 bug,并编译了一个 msysgit 的安装下载:http://tmurakam.org/git/Git-1.7.0.2-utf8-20100725.exe 这个版本比官方的要稍微老一点,不过不影响使用。

解决了中文文件名问题,还有就是 git 的提交注释和日志在 Windows 控制台里不能正确显示中文,解决的办法是在 %USERPROFILE%\.gitconfig 文件中添加如下的设置:

[i18n]
    commitencoding = GBK
    logoutputencoding = GBK

[core]
    quotepath = false

不过这个办法有个缺点是在 bash 里的 git 又会出乱码,如果是习惯通过 bash 来使用 git 的话就去掉 GBK 那两行。

Happy Hacking!

原文地址:https://www.cnblogs.com/oldrev/p/1903500.html