3.1.5 中文支持

Git的本地化做得并不完善,命令的输出及命令的帮助还只能输出英文,也许在未来的版本中会使用gettext实现本地化,就像目前对git-gui命令所做的那样。

中文用户最关心的问题还有:是否可以在提交说明中使用中文?是否可以使用中文文件名或目录名?是否可以使用中文来命名分支或里程碑?简单地说,可以在提交说明中使用中文,但是需要对Git进行设置。至于用中文来命名文件、目录和引用,只有在使用UTF-8字符集的环境下(Linux、Mac OS X、Windows下的Cygwin)才可以,否则应尽量避免使用。

1.UTF-8字符集

Linux平台的中文用户一般会使用UTF-8字符集,Git在UTF-8字符集下可以工作得非常好:

在提交时,可以在提交说明中输入中文。

显示提交历史,能够正常显示提交说明中的中文字符。

可以添加名称为中文的文件,并可以在同样使用UTF-8字符集的Linux环境中克隆和检出。

可以创建带有中文字符的里程碑名称。

但是,在默认设置下,中文文件名在工作区状态输出、查看历史更改概要,以及在补丁文件中,文件名中的中文不能正确地显示,而是显示为八进制的字符编码,如下:


$git status-s

?? "\350\257\264\346\230\216.txt"

$printf "\350\257\264\346\230\216.txt\n"

说明.txt


通过将Git配置变量core.quotepath设置为false,就可以解决中文文件名在这些Git命令输出中的显示问题。


$git config—global core.quotepath false

$git status-s

??说明.txt


2.GBK字符集

如果Linux平台采用非UTF-8的字符集,例如,用zh_CN.GBK字符集编码(有人这么做吗?),就要另外再做些工作了。

将显示提交说明所使用的字符集设置为gbk,这样使用git log查看提交说明时才能够正确显示其中的中文。


$git config—global i18n.logOutputEncoding gbk


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


$git config—global i18n.commitEncoding gbk