3.4.4 msysGit中Git的中文支持

非常遗憾的是,msysGit中的Git对中文支持不如Cygwin中的Git,msysGit中的Git对中文的支持情况与前面讨论过的使用了GBK字符集的Linux环境下的Git相当。

(1)使用未经配置的msysGit提交,如果提交说明中包含中文,从Linux平台或其他UTF-8字符集平台上查看提交说明时会显示为乱码。

(2)同样,从Linux平台或其他使用UTF-8字符集平台进行的提交,若提交说明包含中文,在未经配置的msysGit中也会显示为乱码。

(3)如果使用msysGit向版本库中添加带有中文文件名的文件,在Linux(或其他UTF-8)平台检出文件名时会显示为乱码,反之亦然。

(4)不能创建带有中文字符的引用(里程碑和分支等)。

如果希望版本库中出现使用中文文件名的文件,最好不要使用msysGit,而应该使用Cygwin下的Git。如果只是想在提交说明中使用中文,对msysGit进行一定的设置后还是可以实现的。

为了解决提交说明显示为乱码的问题,msysGit要为Git设置参数i18n.logOutputEncoding,将提交说明的输出编码设置为gbk:


$git config—system i18n.logOutputEncoding gbk


Git在提交时并不会对提交说明进行从GBK字符集到UTF-8字符集的转换,但是可以在提交说明中标注所使用的字符集。因此,如果在非UTF-8字符集的平台中录入中文,需要用下面的指令设置录入提交说明的字符集,以便在commit对象中嵌入正确的编码说明。


$git config—system i18n.commitEncoding gbk


同样,为了让带有中文文件名的文件在工作区状态输出、查看历史更改概要,以及在补丁文件中能够正常显示,要为Git设置core.quotepath配置变量,将其设置为false。但是要注意,如果在msysGit中添加文件名包含中文的文件,就只能在msysGit环境中正确显示,而在其他环境(如Linux、Mac OS X、Cygwin)中文件名会显示为乱码。


$git config—system core.quotepath false

$git status-s

?? 说明.txt


注意 如果同时安装了Cygwin和msysGit(可能配置了相同的用户主目录),或者因为中文支持问题而需要单独为TortoiseGit准备一套msysGit时,为了保证不同的msysGit之间,以及与Cygwin之间的配置互不影响,需要在配置Git环境时使用—system参数。这是因为不同的msysGit安装及Cygwin的系统级配置文件的位置不同,但是用户级配置文件的位置却可能重合。