使用meld做git的diff工具

转载:

http://blog.csdn.net/yangzhongxuan/article/details/8286771

http://www.cherrot.com/2012/09/let-git-diff-merge-use-gui-tools-like-meld/

方案一

I think Meld is a good gui tool for git diff.

setp 1:Ubuntu install meld

 sudo apt-get install meld

step 2:create a shell script named git_meld.sh
    vim ~/bin/ngit-meld.sh

    #!/bin/sh
    meld $2 $5

step 3: chang git_meld.sh permissions

chmod +x ~/bin/git_meld.sh

step 4: config git diff tool

git config --global diff.external ~/bin/git-meld.sh

方案二

搜了一下,抄来抄去的都不靠谱。抄的比较多的是这个方案:

因为meld只接受两个参数,而git diff会传递7个参数,因此需要编写个shell脚本转换一下:

#!/bin/sh
meld $2 $5

保存为git-meld,加可执行权限,然后设置git:

git config –global diff.external /PATH/TO/YOUR/git-meld

这样,以后git diff的时候就可以直接用meld察看了。

然而这不符合我的需求。因为我不希望改变git diff的默认行为。实际上git提供了命令 git difftool 来完成这类工作,而且比引文中的方法更智能。

使用git difftool (git mergetool)

git difftool 和 git mergetool是专门提供给我们以用自己的工具进行diff和merge的命令。只要配置一下就可以使用了:

git config --global diff.tool meld #配置默认的difftool
git config --global merge.tool meld #配置默认的mergetool

然后输入命令 git difftool HEAD HEAD^1 看看?
使用meld直接比较目录

虽然使用git difftool已经基本满足了我的需要,但还有个小问题:如果我要比较两次提交之间的差异时,difftool只能一个文件一个文件的比较,每次都要提 示你是否打开这个文件,然后打开meld进行比较,当你关闭meld后,才会提示下一个差异文件。这样非常浪费效率。能不能直接利用meld的目录比较能 力呢?

搜了一下,果然有人把脚本写好了: https://github.com/thenigan/git-diffall

也可以到这里下载: http://files.cnblogs.com/pengdonglin137/git-diffall-master.zip

下下来以后,进行如下配置:

git config --global diff.tool meld
git config --global alias.diffall /PATH/TO/YOUR/git-diffall

现在试试 git diffall HEAD HEAD^1 ?

多谢lxd提出遇到的问题与我分享,上述配置会遇到错误 “Expansion of alias ‘diffall’ failed; ‘/xxxx/git-diffall/git-diffall’ is not a git command”,最方便的解决方法就是创建一个软链接在你的PATH路径之一里,比如:

ln -s /PATH/TO/YOUR/git-diffall ~/bin/git-diffall

然后配置

git config --global diff.tool meld #这一行必须配置,否则diffall不知道该使用哪个diff程序
git config –global alias.diffall git-diffall

时间: 2024-11-08 19:34:27

使用meld做git的diff工具的相关文章

使用meld作为git的辅助工具

原文链接: https://lrita.github.io/2017/05/14/use-meld-as-git-tool/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io 为什么使用meld 当同一个文件被多人编辑时,经常会出现冲突的问题,因此就需要解决冲突. 但是git内置的diff.merge工具比较孱弱,经常会发生一些问题,例如 删除的代码被人合并时又加了回来 删除的代码被人合并时又加了回来,我想这种场景使用g

GIT+云盘作 做 文档管理工具

GIT+云盘作 做 文档管理工具 在工作中, 会遇到公司的文档 和 自己家里的 文档进行同步的问题, 通常我们使用U盘作为传输节制, 但是不是非常好,文档的改动都不能发现, 导致回家同步的时候, 出各种问题. 这时候我们 就可以 考虑使用GIT了,  外加一个百度云盘 则就顺利的完成了 文档同步和历史文档管理 1.  下载必要的工具msysgit+git tortoise + 百度同步盘. 2.  安装三个工具, 并且在初次使用git tortoise 的时候需要指向msysgit的bin目录

Git与GitFlow工具介绍

关于版本控制 什么是"版本控制"?我为什么要关心它呢? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 不单单可以对保存着软件源代码的文件作版本控制,你可以对任何类型的文件进行版本控制. 有了它你就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等. 使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文

Git团队协作工具

-- 故国神游,多情应笑我,早生华发. Git是什么? Git是一个版本控制工具,代码管理工具,团队协作工具.它跟SVN等传统工具实现同样的目的:但从某种程度来说,它更快,更灵活.我想绝大多数读者都已经在接触这个工具了,并且用于日常的项目中去了.我的这篇文章,不是作为一个Git入门教程,也不是作为一本大块头的教科书.(说到教科书,我推荐下面的这本.这本书确实好,很全面.我的这篇文章,其实就是这本书的读书笔记而已.) Pro Git -- http://git.oschina.net/progit

Git/SVN 版本管理工具的对比

Mysql:修复表repair table name, 清空表truncate table name, 删除表drop table name 更改表名rename table name1 to name2, 备份表mysqldump 库名 表名 > 路径 字段分类group by name, 去重distinct , 字段排序order by desc/asc       ---- 小 Q -----------------------------------------------------

[SourceTree] - 提交代码失败 "git -c diff.mnemonicprefix=false -c core.quotepath=false" 之解决

背景 使用 SourceTree 提交代码失败,尝试了重装 SourceTree 和 Git 问题依旧. 错误信息 git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks push -v --tags origin DEV:DEV fatal: unable to access 'https://bitbucket.org/xxxxxx/spread-talent-system.git/': Rec

Git 源代码管理工具

Git 源代码管理工具 Git基本信息 Git :Git是一个“分布式”的版本控制工具 Git的作者是Linux之父 Linus Benedict Torvolds,当初开发Git仅仅是为了辅助Linux内核的开发 Git在国外已经很普及,在国内也慢慢开始普及 Git与SVN的区别 结构:SVN是“集中式”的版本控制,Git是“分布式”的版本控制 速度:(多数情况下) Git速度高于SVN的速度 分支:SVN的分支比较笨拙,可Git可以轻松的创建无限个分支 安全:Git的数据备份比SVN更安全,

C#做的颜色小工具

常常会用到绘制以及配色,每次看到 framework 里边的 KnowColor.xxx 我就一阵......到底啥颜色啊,干脆做一个一劳永逸的工具吧.功能包含: 可以实现枚举所有系统颜色 圆形.矩形两种色块表达 标记选定 两种背景颜色 颜色可搜索 红绿蓝三种快捷直达 导出当前颜色到 xml 文件 没什么高深技术,就不贴代码了,只为解决手边问题,奉上几张截图 + 下载链接 点击下载发布文件(所需环境 framework 4.5.2)

Git代码管理工具

Git代码管理工具 Git 是分布式的源代码管理工具,这点区别于svn -让源代码可以被追溯,主要是记录了每次的更新了什么,如果新版本不想用,那么则可以退回之前的版本 -Git 是Linux之父当年为了维护管理Linux的源代码写的一个工具 -在没有网络的情况下也可以提交代码(提交到本地),进行记录,有网络时再提交到服务器 Git安装 下载相应的版本并安装,记住你选择的安装目录 安装完成之后,打开dos窗口,输入 git --version   检测是否安装成功以及Git的版本 C:\Users