下面记录在Windows下msysGit的配置。

ls命令无法显示中文路径和中文文件名

在Git\etc\git-completion.bash,加入: alias ls='ls --show-control-chars --color=auto'

msysGit的中文录入问题

msysGit的shell环境中无法输入中文的,想要输入中文,我们需要修改下配置文件/etc/inputrc。

找到如下配置代码
set output-meta off
set convert-meta on
修改成
set output-meta on
set convert-meta off

git log信息中中文显示时乱码的问题

git config --system i18n.logOutputEncoding gbk设置log信息输出到bash时使用gbk编码,例如在windows下的bash只能够显示gbk编码的中文,如果你提交的log信息是utf8编码的,则必须设置该选项,这样git log命令才能够在bash下正确的显示中文字符。

git config --system i18n.commitEncoding gbk 标注提交说明所使用的字符集。

export LESSCHARSET=utf-8 设置分页器的编码,这与git log 能否正常打印中文日志息息相关,因为git log的显示采用的就是less分页器,LESSCHARSET是分页器的环境变量,只要设置为utf-8,即可正常显示中文。使用命令env |grep LESS1可以查看现在less分页器使用的字符编码。

git status命令无法显示中文名文件

[gui] encoding = utf-8

说明:我们的代码库是统一用的 utf-8,这样设置可以在 git gui 中正常显示代码中的中文。

[i18n] commitencoding = GB2312

说明:如果没有这一条,虽然我们在本地用$ git log看自己的中文修订没问题,但是:

这是因为,我们的commit log会被先存放在项目的 .git/COMMIT_EDITMSG 文件中;在中文Windows里,新建文件用的是GB2312的编码;但是Git不知道,当成默认的utf-8的送出去了,所以就乱码了。有了这条之后,Git 会先将其转换成utf-8,再发出去,于是就没问题了。

以上,给 Windows 下的同事在 Git Bash 里推代码就比较完美了。不过仍然有 3 个问题:

这 3 个都是可承受的问题,前两个应该有办法解决;第 3 个归功于文件系统,只能尽量避免checkout,实在需要的时候先注销一次,就不会有问题了。

git GUI的配置

在ms下可能还会使用git gui工具,默认情况下,在gui中的编码是gb2312,如果项目使用的是utf8编码,并且代码中有中文,则需要配置gui的字体。在“设置”选项中可以配置为utf8编码。