首页 > 挨踢(IT) > 彻底解决Git中文乱码问题

彻底解决Git中文乱码问题

2012年11月9日 发表评论 阅读评论 23,436 人阅读    

  现在随着Githut和SNS的流行,Social Code也像Facebook在世界中流行一样,在程序猿中流行开来。而且有犹如星星之火,在程序猿中燎原开来。有Linus这样的大牛作为发明人,有Linux Kernel这样的庞大应用作为“小白鼠”做测试,再有Github这样开放的网络交流平台,Git想不火都难。所以,今天D瓜哥也赶赶时髦,玩转一下Git,这个版本管理工具。

  Git,这个版本管理工具是美国发明的,所以对中文的原生支持性不是很好。在使用时,主要会遇到三个场景对中文的支持性比较差,严重影响用户体验。下面,D瓜哥就针对这三个使用场景进行分别的描述。另外,特别说明一下,我平时工作、学习最主要的系统是Windows 7。Git使用的是msysgit。所以,以下的解决方案是针对Windows系统的解决方案。

一、ls -l 显示文件列表

  想想刚玩Git那会,下个msysgit,瞬间装好,信心爆棚,无视GUI(我比较喜欢Linux以及命令行),cd到某个目录下,ls查看文件,傻眼了。MD,竟然都是乱码,着实无语加郁闷了一把!这是该怎么办呢?

  其实,很简单。只需要修改一下配置信息就能解决问题。这里先做个假设,假设你Git的安装目录是%GIT_HOME%。修改步骤如下:

  使用文本编辑器打开文件%GIT_HOME%\etc\gitconfig,将下面显示的三个选项的字符集修改成如下:

[gui]
     encoding = utf-8
[i18n]
     commitencoding = gbk
[svn]
     pathnameencoding = gbk

  通过这里的设置,打开Git环境中的中文支持。另外,需要特意说明一下,虽然pathnameencoding设置了文件路径的中文支持,但是为了防止不必要的麻烦出现,同时也为了提高在Bash中快速的进入某个路径,推荐使用英文路径,不要使用中文路径。

  然后,使用文本编辑器打开文件%GIT_HOME%\etc\git-completion.bash,然后再其中添加如下内容:

alias ls='ls --show-control-chars --color=auto'

  我个人比较喜欢列表显示文件,但是msysgit安装后,不支持ll。所以,就自己手动添加上支持。在上面那行配置的下面,添加下面这行配置:

alias ll='ls -l'

  玩Linux的人,应该都能看出来,其实这只是Linux命令中,给命令起了一个别名而已。

  最后,使用文本编辑器打开文件%GIT_HOME%\etc\profile,将下面的这个配置的字符集设置成如下:

export LESSCHARSET=utf-8    #或gbk

  到这里,就大功告成了。你在Bash中,试一下,ls或者ll,是不是看到了久违的中文呢?

二、提交中文Commit Log

  既然使用Git,那么肯定是要文件修改后,肯定是要提交的。但是,刚刚安装好后msysgit对Commit Log的中文支持是在是忍无可忍。没办法,这时还是要“自己动手,丰衣足食”啊。

  其实,msysgit对中文Commit Log主要是因为默认的编辑器vi对中文的支持不好。所以,把默认编辑器修改成一个对中文支持比较好的编辑器即可。对于编辑器,我比较喜欢vim(在Windows下就是gVim),下面就把默认编辑器修改成gVim。步骤如下:

  1. 打开目录GIT_HOME%\bin\;
  2. 找到vi或者vim文件(注意:没有后缀。),复制一份出来命名gvim;
  3. ,使用文本编辑器打开gvim,把里面的exec /share/vim/vim73/gvim 改成自己的Gvim目录,D瓜哥的是exec /C/Vim/vim73/gvim
  4. 运行msysgit Bash,执行命令git config –global core.editor gvim

  到这里,把默认编辑器已经修改成了gVim。另外,还需要修改一下msysgit的配置项。使用文本编辑器打开文件%GIT_HOME%\etc\inputrc,修改下面两个配置项如下:

set output-meta on
set convert-meta off

  我第一次在修改完这些配置后,提交修改中还是不能很好的支持地支持中文。后来发现,主要是使用方法不对。这里,给大家提个醒,提交时应该使用如下指令:

git commit -a 

  注意,不要加-m的参数。否则就不能使用gVim了,也就不能支持中文了。

三、提交文件名为中文的文件

  其实,D瓜哥也不知道如何修改才能很好的支持中文。不过,这里有一个取巧的方法:一般同时修改的文件都是相关的文件。所以,在添加或者提交时,可以使用-a参数,把几个文件同时添加或提交。

  在这里,D瓜哥也做个留个疑问,如何才能让Git很好的支持提交文件名为中文的文件?

参考资料:

  1. msysgit下载网站
  2. Windows平台下git中文乱码的问题
  3. git编辑器改用本机gvim


作 者: D瓜哥,https://www.diguage.com/
原文链接:https://wordpress.diguage.com/archives/26.html
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。

分类: 挨踢(IT) 标签: , ,
  1. D瓜哥
    2012年11月9日16:40 | #1

    网友“妮妮”指出D瓜哥的一个错别字,已经修改。D瓜哥表示感谢。

  2. 早好
    2012年11月17日12:42 | #2

    佩服,佩服,可以转载吗?

    • D瓜哥
      2012年11月18日13:15 | #3

      可以,请注明作者和原文链接即可!

  3. Roceys
    2012年12月27日16:06 | #4

    瓜哥,我装的也是msysgit,win7下怎么设置Http代理git clone https呢?

    • D瓜哥
      2012年12月27日20:42 | #5

      这个没有设置过。有机会上网查查再说吧。D瓜哥也刚刚用Git,很多东西都不熟悉。慢慢来,一起努力!整成了,再分享。

  4. Roceys
    2012年12月28日11:29 | #6

    @D瓜哥
    找到办法了:设置代理
    export http_proxy=http://10.1.2.188:80/
    export https_proxy=http://10.1.2.188:80/

  5. transmixer
    2013年12月12日17:31 | #7

    很好的文章,但是我遇到比较恼火的问题是git status无法正常显示中文名,总是一串unicode值,不知有无办法解决?

  6. 我真的是游客。。。
    2014年2月25日17:16 | #8

    用这个就好了 git config –global core.quotepath false

  7. 2015年9月14日17:15 | #10

    第二大点,两个都试了,还是无法在git commit的时候输入中文,请问要怎么解决?

  8. 游客
    2015年12月9日22:40 | #11

    好文章,但是中文文件名怎么提交的,输入还是unicode值,求教

  1. 2015年7月1日00:15 | #1