Git跨平台中文乱码临时解决方案-阿里云开发者社区

开发者社区> 雪梦科技> 正文

Git跨平台中文乱码临时解决方案

简介:
+关注继续查看

Git 是一个非常优秀的分布式版本控制系统,最初为Linux Kernel版本管理进行量身定做。优点是,和其他版本控制系统相比,稳定,速度快,跨平台,易学易用,无需要花费成本。更多优点请点击阅读:http://whygitisbetterthanx.com/

缺点也有点明显,那就是由于该版本控制系统专门为Linux 内核定制,没有开发其他平台的版本,因此,在其他平台上使用的都是Git的移植版本。在Windows上使用Git,通常是msysGit 和 TortoiseGit 进行组合使用。在Windows系统下Git的使用过程中,我们发现,如果出现以下情况之一,可能出现乱码:

1、Log提交时使用中文注释

2、目录或者文件名含有中文

3、代码中含有中文注释

这些问题在跨平台使用的时候极为明显,给跨平台代码管理带来极大的不便。本人也是深受其害,希望官方能够早日开发跨平台的版本,解决掉乱码问题。

经过本人实践,总结了一套临时解决方案,暂时能够解决以上乱码问题。具体操作如下:

注:由于Linux上通常使用utf-8进行编码,因此,项目管理中统一使用utf-8进行编码。

一、下载并安装msysGit和TortoiseGit

msysGit :http://utf8-git-on-windows.googlecode.com/files/Git-1.7.3.2-utf8-20110213.exe

TortoiseGit:http://utf8-git-on-windows.googlecode.com/files/TortoiseGit-1.6.3.2-UTF8-32bit-20110127.msi

二、在Git\etc\git-completion.bash文件中添加:
alias ls='ls --show-control-chars --color=auto'
作用:使得在 Git Bash 中输入 ls 命令,可以正常显示中文文件名。

三、修改Git\etc\inputrc文件中的两项配置:
set output-meta on
set convert-meta off

作用:使得在 Git Bash 中可以正常输入中文,比如中文的 commit log。
四、在Git\etc\profile文件中添加:

export LESSCHARSET= utf-8
作用:$ git log命令不像其它vcs一样,n条log从头滚到底,它会恰当地停在第一页,按space键再往后翻页。这是通过将log送给less处理实现的。以上即是设置less的字符编码,使得$ git log可以正常显示中文。其实,它的值不一定要设置为 utf-8,比如latin1也可以……。还有个办法是$ git --no-pager log,在选项里禁止分页,则无需设置上面的选项。

五、在C:Gitetcgitconfig文件中修改或添加如下配置:
[core]
quotepath = false

作用:没有这一条,$git status输出中文会显示为UNICODE编码。


注:1、不管是在Windows还是在Linux下,请使用utf-8进行编码,而不是GBK或者其他。

在Eclipse下的编码设置请参考: 《Eclipse中设置编码的方式

2、在进行版本管理时,尽量使用TortoiseGit和Git GUI,而不建议使用Git Bash。

3、以上只是临时解决方案。


参考文章:

1、msysGit的配置及中文支持  http://blog.sina.com.cn/s/blog_6a5e34ad0100w23u.html

2、msysGit 中文环境配置及跨平台开发注意事项 http://baifa.me/2010/10/msysgit.html

3、Git 系列之二:Windows 下 Git 客户端的选择,及 msysGit 各种中文问题的解决-转载  http://www.cnblogs.com/baizx/archive/2010/08/09/1796120.html

4、 Git 中文乱码问题  http://kongjian.baidu.com.cn/kazaff/blog/item/6a8384114cac7969cb80c42d.html

5、解决Msysgit的中文乱码问题 http://surpass-li.iteye.com/blog/679989

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
PagerAdapter instantiateItem()方法position错误解决方案
异常信息:java.lang.IndexOutOfBoundsException: index=3 count=2   在instantiateItem各个条目View的时候。会有 container.addView(view, 0); 这样一行代码。
1030 0
WIN7安装IIS后无默认网站(Default Web site)解决方案
作者:jiankunking 出处:http://blog.csdn.net/jiankunking 提示本文仅供参考,处理前请备份好相关文件,以便恢复,后面的资源是WIN7的,其余系统资料暂时没有,请不要随便使用。 1.找到资源,复制到如下文件夹下:config文件夹复制到C:\Windows\System32\inetsrv\config文件夹下inetpub文件夹复制C:\inetpu
1549 0
有效解决VC++6.0一个工程不能有多个main函数的解决方案
一.现象及原因 现象:在一个工程中有2个带有main函数的文件:InsertSort.cpp,ShellSort.cpp InsertSort.cpp 1 #include 2 3 void InsertSort(int A[],int n) 4 { 5 i...
1012 0
跨平台APP开发Flutter ListView 局部刷新数据、ListView点赞收藏
本文章实现的是 ListView 中 Item 局部数据刷新的效果,在这只是一个 Demo ,是一个实现思路,在应用开发的更多场景中如 资讯列表的点赞、收藏等等,诸多业务场景都可使用。
792 0
+关注
雪梦科技
专注Android应用研发,性能优化,移动安全等领域。
457
文章
6
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载