-
-
Save xkyii/1079783 to your computer and use it in GitHub Desktop.
原帖地址: http://topic.csdn.net/u/20110113/19/b0d5d506-4307-428b-a61d-7974aa66a2da.html | |
首先要说明的是:这里介绍的方法都是大部分是本人“悟”出来的,所以网上难有流传! | |
好方法不能自己私藏,否则就白忙乎这几天了,分享给有需要的朋友们。如果有转载,敬请注明来自*CSDN老邓*作品。 | |
呵呵,给自己打广告,实在是无耻之极,权当无聊之时打字之用。 | |
欢迎流传,为最优秀的分布式版本管理系统Git做宣传!! | |
步骤: | |
1. 下载:http://loaden.googlecode.com/files/gitconfig.7z | |
2. 解压到:<MsysGit安装目录>/cmd/,例如:D:\Program Files\Git\cmd | |
3. 进入Bash,执行gitconfig | |
搞定什么了? | |
看看gitconfig的内容先: | |
Perl code | |
#!/bin/sh | |
# 全局提交用户名与邮箱 | |
git config --global user.name "Yuchen Deng" | |
git config --global user.email 邮箱名@gmail.com | |
# 中文编码支持 | |
echo "export LESSCHARSET=utf-8" > $HOME/.profile | |
git config --global gui.encoding utf-8 | |
git config --global i18n.commitencoding utf-8 | |
git config --global i18n.logoutputencoding gbk | |
# 全局编辑器,提交时将COMMIT_EDITMSG编码转换成UTF-8可避免乱码 | |
git config --global core.editor notepad2 | |
# 差异工具配置 | |
git config --global diff.external git-diff-wrapper.sh | |
git config --global diff.tool tortoise | |
git config --global difftool.tortoise.cmd 'TortoiseMerge -base:"$LOCAL" -theirs:"$REMOTE"' | |
git config --global difftool.prompt false | |
# 合并工具配置 | |
git config --global merge.tool tortoise | |
git config --global mergetool.tortoise.cmd 'TortoiseMerge -base:"$BASE" -theirs:"$REMOTE" -mine:"$LOCAL" -merged:"$MERGED"' | |
git config --global mergetool.prompt false | |
# 别名设置 | |
git config --global alias.dt difftool | |
git config --global alias.mt mergetool | |
# 取消 $ git gui 的中文界面,改用英文界面更易懂 | |
if [ -f "/share/git-gui/lib/msgs/zh_cn.msg" ]; then | |
rm /share/git-gui/lib/msgs/zh_cn.msg | |
fi | |
这个脚本解决了: | |
1. 中文乱码 | |
2. 图形化Diff/Merge | |
3. 还原英文界面,更好懂 | |
其中最有价值的,就是Git的Diff/Merge外部工具TortoiseMerge配置。 | |
安装MsysGit后,一个命令即可完成配置。 | |
适用于MsysGit安装版与绿色版。 | |
网上关于为Git配置TortoiseMerge来进行diff和merge的介绍几乎没有(反正我没有搜索到),但我认为TortoiseMerge是最好用的,单文件(一个可执行程序,绿色版,下载地址:http://sourceforge.net/projects/tortoisesvn/files/Tools/1.6.7/TortoiseDiff-1.6.7.zip/download),实在是绝配! | |
为什么不使用TortoiseGit?他们不是集成了TortoiseMerge吗? | |
理由:TortoiseGit只有Windows才有,我更喜欢git gui,结合gitk,跨平台实在相同的操作方式,更爽! | |
如果您离不开TortoiseGit,这篇文章就直接无视吧。 |
git乱码解决方案汇总 http://zengrong.net/post/1249.htm | |
本站原创文章,转载请注明: 转载自zrong's Blog,原文 git乱码解决方案汇总,欢迎使用文章源码进行转载。 | |
本站转载文章会标明[转],转载请注明原始作者文章地址。 | |
我一直是在cygwin下使用git,辅以TortoiseGit。使用上没什么问题,但今天在处理一个有中文文件名的项目时却出现文件名乱码的问题。 | |
情况是这样的: | |
在一个使用cygwin的bash提交的git项目中,已经完成了所有的提交,但使用TortoiseGit查看的时候,却发现仍有文件没有提交,甚至是有文件还处于未暂存的状态。于是使用TortoiseGit提交; | |
再次用cygwin下的git status查看,这次又发现了未提交的情况。再次用git commit命令行提交; | |
回到TortoiseGit下查看,问题又出现了!此时准备返回两次提交前的版本,却因为文件名乱码的问题,无法返回了! | |
搜索一番,发现git文件名、log乱码,是普遍问题,这其中有编码的原因,也有跨平台的原因。因为git是从linux移植过来,默认采用UTF-8编码。而Windows默认使用UTF-16编码来保存文件名,应该就是这些不同的处理方式造成了乱码。下面是解决方案: | |
乱码情景1 | |
在cygwin中,使用git add添加要提交的文件的时候,如果文件名是中文,会显示形如274\232\350\256\256\346\200\273\347\273\223.png的乱码。 | |
解决方案: | |
在bash提示符下输入: | |
git config –global core.quotepath false | |
ore.quotepath设为false的话,就不会对0×80以上的字符进行quote。中文显示正常。 | |
乱码情景2 | |
在MsysGit中,使用git log显示提交的中文log乱码。 | |
解决方案: | |
设置git gui的界面编码 | |
git config –global gui.encoding utf-8 | |
设置 commit log 提交时使用 utf-8 编码,可避免服务器上乱码,同时与linix上的提交保持一致! | |
git config –global i18n.commitencoding utf-8 | |
使得在 $ git log 时将 utf-8 编码转换成 gbk 编码,解决Msys bash中git log 乱码。 | |
git config –global i18n.logoutputencoding gbk | |
使得 git log 可以正常显示中文(配合i18n.logoutputencoding = gbk),在 /etc/profile 中添加: | |
export LESSCHARSET=utf-8 | |
乱码情景3 | |
在MsysGit自带的bash中,使用ls命令查看中文文件名乱码。cygwin没有这个问题。 | |
解决方案: | |
使用ls –show-control-chars命令来强制使用控制台字符编码显示文件名,即可查看中文文件名。 | |
为了方便使用,可以编辑/etc/git-completion.bash ,新增一行 alias ls=”ls –show-control-chars” | |
最终,还是没能解决最开始我提到的文件名提交乱码的问题。不过倒是有了一个新发现:使用git gui命令,在MsysGit下,看到的中文文件名为正常;而在cygwin下,看到的中文文件名为乱码。 | |
同样的,如果一直使用TortoiseGit(实际调用MsysGit)提交,那么中文文件名没问题;一直使用cygwin提交,中文文件名也没问题。但一定不能交叉使用。这应该是两个平台默认处理中文文件名的方式不同造成的。 | |
分别设置LANG、LC_CTYPE、LC_ALL参数为同样的编码,问题依旧。 | |
cygwin官方网站提到了非拉丁语文件名的问题,也许研究后能解决该吧:Chapter 2. Setting Up Cygwin | |
这里还有一篇讲解Linux系统编码文章:locale的设定及其LANG、LC_ALL、LANGUAGE环境变量的区别 | |
貌似终极的解决办法是通过修改git和TortoiseGit源码实现的,有网友这么做了:让Windows下Git和TortoiseGit支持中文文件名/UTF-8 | |
本文参考链接: | |
搞定Git中文乱码、用TortoiseMerge实现Diff/Merge | |
MsysGit乱码与跨平台版本管理 | |
git中文文件名、目录名乱码应该怎么解决? |
在mac下面如果是乱码,添加了
[gui]
encoding = utf-8
[i18n]
logoutputencoding = utf-8
在.gitconfig下面。logoutputencoding 需要和其他地方设置成统一的编码。
在 Windows 下,把目录名和文件名乱码的文件删了,本地也提交了。
本地再次提交时,乱码的文件仍然待提交状态,一提交又提示 changes not staged for commit。
Git库里面删不掉它了。这种有解决办法吗?
解决方案:
在bash提示符下输入:
git config –global core.quotepath false
这条语句中的global前面应该是两个"-"。
如下:
git config --global core.quotepath false
@ Yican在mac下面如果是乱码,添加了
[gui]
encoding = utf-8
[i18n]
logoutputencoding = utf-8
在.gitconfig下面。logoutputencoding 需要和其他地方设置成统一的编码。
这个答案是正确的
你好,我在Windows上用gitgui在本地commit的时候输入的中文,在本地显示正常,但是当上传代码到github上面的时候就乱码了。效果比如这个仓库:https://github.com/qq1623299667/blogtest
我代码中都是utf8编码的,所以都是正常显示,但是commit的中文是在gui中写的,我没有设置gui commit的编码,gui的commit可能默认按照windows的gbk编码来实现,请问我该怎么操作才可以让我的提交信息到了github上面也能正常显示?
ps:如果你说:那你直接设置gui commit编码就好了啊?哦天,这个我就是不知道才问的。。。
我需要的是一个方法,在github代码编码和windows本地编码的界面不乱码的前提下,能够按照你给的操作让github上面的commit信息也恢复正常编码,而不是一句简单的你百度啊你谷歌之类的~
有遇到 git status
没问题,git branch
就乱码了的吗?
@kid1412621 我也遇到同样的情况了 请问后来是怎么解决的
@kid1412621 我也遇到同样的情况了 请问后来是怎么解决的
忘了,升级 git?还有个,环境变量,windows 好像识别有问题,所以我配了两个 LESSCHARDEF
和 LESSCHARSET
Where is git-diff-wrapper.sh