使用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工具比较孱弱,经常会发生一些问题,例如

删除的代码被人合并时又加了回来

删除的代码被人合并时又加了回来,我想这种场景使用git的团队都遇见过。如果出现这种问题时, 解决冲突的人又是一个粗心的家伙,同时代码有没编译出错,则很难再发现产生了这个异常。只有 当bug再次出现时,才会发现“这个bug我明明修复了,怎么代码又回滚了?”。

下面详细说明一下这个问题出现的原因。

当git上原始代码为:

conflict begin
Hello world!!!
Here is a misuse code.
conflict end

当用户A、B同时下载该代码同时开发时。

用户A发现了一个bug,将bug移除,提交代码,代码变更为:

conflict begin
Hello world!!!
conflict end

同时用户B添加了一个新的功能,代码变更为:

conflict begin
Hello world!!!
Here is a misuse code.
Here is a new feature.
conflict end

然后B提交代码时会产生一个冲突,需要解决,则git默认的merge工具则显示冲突代码为:

conflict begin
Hello world!!!
<<<<<<< HEAD
Here is a misuse code.
Here is a new feature.
=======
>>>>>>> e84872b222b7a9d8a3e8745ea3c9a3e85237503c
conflict end

然而用户B可能对git的merge显示并不熟悉、或者B是一个粗心的人。此时用户B看到<<<<<<<=======之间是自己本地提交的新功能代码,则B将merge合并提示信息删除后,代码变为:

conflict begin
Hello world!!!
Here is a misuse code.
Here is a new feature.
conflict end

然后B将代码提交,此时可见,被删除的bug代码又回来了,如果此时没有人专门review代码, 大家并没有感觉到上面不对,只有在再次出现bug时才会发现该问题。

三路合并工具

最容易避免以上问题出现的方式就是采用三路合并工具。场景的三路合并工具有kdiff3meldBeyond Compare等。在此推荐meld,该工具具有良好的跨平台能力,无论你使用 Window x/Linux/Mac OS都可以很容易的一键安装该软件,同时免费使用,而且启动速度 快于Beyond Compare等等收费软件。

mac 安装 meld

执行以下命令一键安装

brew install caskroom/cask/meld

git 配置

修改本地的~/.gitconfig配置文件,加入以下几行配置

[merge]
        tool = meld
	conflictstyle = diff3
[mergetool "meld"]
        cmd = meld $LOCAL $BASE $REMOTE --output=$MERGED --auto-merge

当用户运行git pull或者git pull --rebase产生冲突时,执行git mergetool就会弹出meld 的三路合并界面: 

可见界面一共分为3栏,左边一栏为你本地当前文件内容,右面一栏为远端服务器上当前文件内容。 中一栏为本地当前文件原始内容。可见中间一栏meld已经帮你自动合并了,检查无误就可以直接保存 退出了。然后meld帮你自动保存了一份git原始冲突文件xxx.orig,检查无误可以删除此文件。

注:当不同行冲突时,meld会帮你自动合并,当同一行冲突时,meld会以git 冲突文件的格式显示在 中间栏,此时你比较判断<<<<<<< HEAD/=========/>>>>>>>>3行直接的差异手动合并即可。

时间: 2024-10-13 06:29:24

使用meld作为git的辅助工具的相关文章

使用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:cr

Git 源代码管理工具

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

程序员必备简捷开发辅助工具总结

程序员必备简捷开发辅助工具总结 本文独家授权给stormzhang运营的公众号AndroidDeveloper,拒绝其他任何形式的转载. 写在前面: 工欲善其事必先利其器,拥有简捷的开发辅助工具能大大提高我们程序猿的开发效率.Melo刚到学校就给大家总结了一些常用的辅助开发的工具,希望大家能喜欢,闲话不多说,马上开始~! 零:Notepad++ Notepad++ 程序员必备的文本编辑器,软件小巧高效,支持27种编程语言,通吃C,C++ ,Java ,C#, XML, HTML, PHP,JS

linux下gitflow辅助工具安装和使用

gitflow是一个确保nvie推荐的git branch分支策略最佳模型得到有效实施的辅助工具.它作为git的一个子命令而存在. http://nvie.com/posts/a-successful-git-branching-model/ linux下安装非常简单 https://github.com/nvie/gitflow/wiki/Linux $ yum install gitflow 安装完成以后git flow xxx就可以使用了. git flow init [-d] list,

VSCode 小鸡汤 第01期 - REST Client 简单好用的接口测试辅助工具

介绍 今天给大家介绍一个后端开发辅助的好工具 -- REST Client,插件如其名这就是一个 REST 的客户端插件,把我们的 VSCode 转化为一个 REST 接口测试的利器 我们一般都会用 PostMan 来完成接口测试的工作,因为用起来十分简单快捷,但是一直以来我也在寻找更好的方案,一个不用切换窗口多开一个 app 的方案 -- 终于在使用 VSCode 一段时版本间,我找到了 REST Client 插件,初看 REST Client 插件的时候,会觉得他十分的简陋,但是在使用一段

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 -----------------------------------------------------

net辅助工具列表

最近对.net的辅助工具比较感兴趣,网上也已经有.net的十个必备工具的帖子了,这里提供了一份全面的工具列表: Code generation NVelocity CodeSmith X-Code .NET XGoF - NMatrix / DEVerest Compilation eXtensible C# - ResolveCorp Mono DotGNU - GNU Obfuscation LSW-IL-Obfuscator - Lesser Software Demeanor for .

Rhythmk 学习 Hibernate 04 - Hibernate 辅助工具 之 JBoos Tool

1.安装JBoos Tool Help -> Install new Software 然后添加: http://download.jboss.org/jbosstools/updates/development http://download.jboss.org/jbosstools/updates/stable/ 稍等一刻,选择 Hibernate tool 下一步 ,完成后重启Eclipse即可. 2.项目配置文件生成: 2.1 新建一项目,项目右键生成相关配置 然后如图: 2.2 此处需

不需要用任何辅助工具打包Qt应用程序

不需要用任何辅助工具打包Qt应用程序.方法如下:    生成release文件后,双击里面的exe文件,会弹出一个对话框,里面提示缺少哪一个DLL文件, 然后根据该文件名到你安装QT软件的目录下的/bin文件夹里找到相应DLL文件,复制到release文件夹里 ,注意一定要到/bin目录下查找,因为QT安装目录里有多个同名的DLL文件,但功能不同.这样不断循环 添加所需DLL文件,添加五六个之后软件就可以运行了