[分享]搞定Git中文乱码、用TortoiseMerge实现Diff/Merge

老邓 2011-01-13 07:36:33
首先要说明的是:这里介绍的方法都是大部分是本人“悟”出来的,所以网上难有流传!
好方法不能自己私藏,否则就白忙乎这几天了,分享给有需要的朋友们。如果有转载,敬请注明来自*CSDN老邓*作品。
呵呵,给自己打广告,实在是无耻之极,权当无聊之时打字之用。
欢迎流传,为最优秀的分布式版本管理系统Git做宣传!!

步骤:
1. 下载:http://loaden.googlecode.com/files/gitconfig.7z
2. 解压到:<MsysGit安装目录>/cmd/,例如:D:\Program Files\Git\cmd
3. 进入Bash,执行gitconfig

搞定什么了?
看看gitconfig的内容先:
#!/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,这篇文章就直接无视吧。
...全文
7147 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
sb3day 2013-03-17
  • 打赏
  • 举报
回复
请问:tortoisegit revert 中文乱码要怎么解决? git 恢复删除文件,我用控制台的git checkout命令就打印出乱码了
sensun 2012-04-15
  • 打赏
  • 举报
回复
学习了,谢谢
清凉一夏 2012-03-21
  • 打赏
  • 举报
回复
不懂进来了解了解……
5257007 2011-06-29
  • 打赏
  • 举报
回复
我的git配置后,除了git status之外的命令,显示中文都没有问题。git status显示中文文件名字和目录名字都是乱码,谁遇到这种情况没有?多谢啊。
zrongzrong 2011-02-14
  • 打赏
  • 举报
回复
我用cygwin,貌似这个方法不行?提示不支持合并工具
chenyufei1013 2011-01-26
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 loaden 的回复:]

引用 21 楼 chenyufei1013 的回复:

git下下来的代码,能加上像svn的图标吗,用来标识那些文件修改过的?

那你只能安装:TortoiseGit
[/Quote]
恩,原先我下了个Git GUI不大好用,TortoiseGit试试看。
老邓 2011-01-24
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 chenyufei1013 的回复:]

git下下来的代码,能加上像svn的图标吗,用来标识那些文件修改过的?
[/Quote]
那你只能安装:TortoiseGit
chenyufei1013 2011-01-24
  • 打赏
  • 举报
回复
git下下来的代码,能加上像svn的图标吗,用来标识那些文件修改过的?
shyokou 2011-01-21
  • 打赏
  • 举报
回复
冲着 "乱码" 来的, 统一编码才是王道 ...

[Quote=引用楼主 loaden 的回复:]
首先要说明的是:这里介绍的方法都是大部分是本人“悟”出来的,所以网上难有流传!
好方法不能自己私藏,否则就白忙乎这几天了,分享给有需要的朋友们。如果有转载,敬请注明来自*CSDN老邓*作品。
呵呵,给自己打广告,实在是无耻之极,权当无聊之时打字之用。
欢迎流传,为最优秀的分布式版本管理系统Git做宣传!!

步骤:
1. 下载:http://loaden.googlecode.com/……
[/Quote]
老邓 2011-01-14
  • 打赏
  • 举报
回复
合并结束后,会生成 .orig 备份文件。
如果不想要这个备份文件,可以:
git config --global mergetool.keepBackup false
老邓 2011-01-14
  • 打赏
  • 举报
回复
昨晚在ArchLinux下配置好了图形化的Diff/Merge,使用meld来实现。
这样Win/Unix平台,除Diff/Merge工具不同外,操作方式都可以使用git gui/gitk来搞定了。
不常用的功能,只需要进入Shell,命令行操作即可。

注意:提交log时尽量在git gui中提交,它保证提交的log是utf-8编码的。
老邓 2011-01-14
  • 打赏
  • 举报
回复
今天使用MsysGit,在Bash中打印log时,遇到警告:
WARNING: terminal is not fully functional

经查,与less有关。
解决方案:删除环境变量TERM的值(不知道为什么被设置成了dumb,实际上应该为cygwin)。
记录一下,备用。
  • 打赏
  • 举报
回复
ollydbg23 2011-01-13
  • 打赏
  • 举报
回复
不错,而且loaden说的那个Why Git is Better than X我浏览过英文版的,呵呵。
iambic 2011-01-13
  • 打赏
  • 举报
回复
SVN一到两个菜单,HG一到三个菜单。空间本来就是用的啊,只要物有所值。另一个角度来讲,如果右键没有HG/SVN,我恐怕也很少会点右键了。
xunxun 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 iambic 的回复:]

收藏下,虽然不用git,但说不准什么时候心血来潮了。
不过我估计倒是还是用TortoiseGit。毕竟已经装了TortoiseHg和TortoiseSVN,跨VCS的相同操作方式,爽!Linux上我全部命令行。呵呵。
[/Quote]
右键菜单一堆东西……
iambic 2011-01-13
  • 打赏
  • 举报
回复
收藏下,虽然不用git,但说不准什么时候心血来潮了。
不过我估计倒是还是用TortoiseGit。毕竟已经装了TortoiseHg和TortoiseSVN,跨VCS的相同操作方式,爽!Linux上我全部命令行。呵呵。
xunxun 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 loaden 的回复:]

引用 3 楼 xunxun1982 的回复:

不错,可惜我不用msysgit……
ps:msysgit包含了msys的东西,想把git分出来使用。

在没有人重写git之前,这是不可能的!
因为git中大量使用了unix下的工具。

另:git diff 执行后,就直接使用TortoiseMerge来比较差异了。
这相当于解决了:git diff乱码的问题!

提示:在g……
[/Quote]

那么,把它分离出来,再复制到我的msys里用吧
老邓 2011-01-13
  • 打赏
  • 举报
回复
有人建了一个网站来推广Git,致敬:Why Git is Better than X
我打印了《Pro Git》中文版,其中最触动我的是第三章开头的一句话:“Git鼓励在工作流程中频繁使用分支与合并,哪怕一天之内进行许多次都没有关系。理解分支的概念并熟练运用后,你才会意识到为什么Git是一个如此强大而独特的工具,并从此真正改变你的开发方式。
yutaooo 2011-01-13
  • 打赏
  • 举报
回复

支持老邓。留名标记。

正好在学习Git,看来能派上用处。

另外,我觉得Version Control with Git要比Pro Git要好。
加载更多回复(6)

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧