参考: https://stackoverflow.com/questions/34119866/setting-up-and-using-meld-as-your-git-difftool-and-mergetool

怎么配置meld来配合git,将其作为difftool和mergetool

difftool和mergetool的2个git命令,可以调起第三方的工具来进行文件比对或者出现合并冲突时解决冲突。 不使用GUI的工具,操作起来是不很方便,工欲善其事,必先利其器,所以今天要介绍的如果配置并使用meld,这个GUI工具,提高工作效率。

安装meld很简单,大家到官网下载自行安装吧。

一,将meld配置为gitdiff工具

我们将手动修改.gitconfig文件来进行配置,可以参考这里来找到这个文件。 需要添加的内容如下所示

[diff]tool = meld
[difftool]prompt = false
[difftool "meld"]cmd = D:/Meld/meld $REMOTE $LOCAL 

需要解释一下是 cmd = D:/Meld/meld $REMOTE $LOCAL , $REMOTE代表的是git仓库中的文件, $LOCAL代表的是你工作区中文件。 如何你的meld的安装路径中有空格,记得用引号把路径包起来,例如 cmd = “D:/some path/meld” $REMOTE $LOCAL

当你在工作区中修改了文件,想和暂存区中的文件进行对比时,允许 git difftool 就会打开meld,meld会打开2个窗口,左侧显示的工作区中文件内容,右侧显示的暂存区中文件的内容(你没看错,cmd的值没问题,我也不知道为啥这样~~)。  这里需要注意,meld会找出所有的工作区和暂存区内容不同的文件,每次打开一个文件供你进行对比,直到全部对比完。

如果我想对比的是暂存区和仓库中的文件怎么办呢?

加个参数即可   git difftool  --staged    meld左侧是暂存区文件,右侧是仓库中的文件

如果我想对比的是工作区和仓库中的文件怎么办呢?

加个参数即可   git difftool HEAD       meld左侧是工作区文件,右侧是仓库中的文件

如果我想对比的是2个commit之间文件的差异呢

git difftool commitId1   commitId 2

如果我想对比的是2个branch之间文件的差异呢

git difftool branch1   branch2

二,将meld配置为mergetool工具

为什么merge时会产生冲突,可以参考这里   在这里我们只讨论如何配置,以及配置中要用的参数的含义

请将下面的配置放入你的git的配置文件中

[merge]tool = meld
[mergetool "meld"]cmd = D:/Meld/meld $LOCAL $MERGED $REMOTE --output $MERGED#cmd = D:/Meld/meld $LOCAL $BASE $REMOTE --output $MERGED

我们看到,这与配置difftool的套路是相同,只是参数更多了,下面我们讲讲这些参数。

$LOCAL 代表的是本分支下产生合并冲突的文件

$REMOTE  代表的是将要被合并过来的分支中产生合并冲突的文件

第一个和第三个参数是固定,但是第二个参数,有2中选择:

$MERGED:代表的是没有冲突的部分已经合并,且包含冲突信息

$BASE:代表的是产生冲突的两个文件的parent,他的内容中是不包含相冲突的这2个commit的内容的。

通常我们常用的是 cmd = D:/Meld/meld $LOCAL $MERGED $REMOTE --output $MERGED

因为$MERGED的内容已经把能合并都合并好了,我们要做的仅仅是把git不能决定的部分决定了即可,省力。

meld启动后,会有3个窗口,左侧为本分支中的文件的内容,中间是merge的中间结果, 右侧是被合并过来的分支中的文件。我们要修改的是中间这个窗口中的内容。

--output $MERGED:代表的是最终merge完的文件

配置并不复杂,但是要说明的是mergetool不会替你进行merge,他唯一的作为帮你解决冲突,确定冲突的文件的最终的内容。当你解决完冲突,并进行保存后,你要手动进行commit,把这个merge的结果提交。

如果你在meld中操作的时候,不想继续解决冲突了,不要保存,直接关闭meld,git 会提示  Was the merge successful? [y/n], 输入 n, 你在meld中进行的操作不会保存,也就是说没有解决冲突问题。  但是如果你在meld中进行过保存,那git的这个提示就不会出现了,恢复的方式是找一个叫 filename.orig的文件,这里面是冲突meld启动前备份出来了,用他恢复你的文件成为冲突刚刚出现时的状态。  确认合并完了,手动删除filename.orig

三,mergetool和difftool相关推荐

  1. Git 冲突等问题解决

    Git冲突有以下两种: 智能自动合并 多成员修改不同文件 多成员修改相同文件不同区域 同时修改文件名和文件内容 上述三种方式都可以用同一中方式解决,也就是在执行push之前先进行pull操作 git ...

  2. 配置WinMerge作为Git的mergetool

    前几天和同学协同开发的时候遇到了合并冲突问题,git的默认gui又只能Use remote edtionorUse local edtion 无法进行更加细致的合并.所以我就想配置一个合并工具. 搜索 ...

  3. (大数据工程师学习路径)第三步 Git Community Book----高级技能

    一.创建新的空分支 1.创建新的空分支 在偶尔的情况下,你可能会想要保留那些与你的代码没有共同祖先的分支.例如在这些分支上保留生成的文档或者其他一些东西.如果你需要创建一个不使用当前代码库作为父提交的 ...

  4. 配置Beyond Compare 4作为git mergetool来解决git merge命令导致的文件冲突

    文章目录 前言 解决方案 前提 配置 Beyond Compare 文件冲突及处理 产生冲突 解决冲突 工具配置的参数含义 git config git mergetool 思考 总结 前言 使用 g ...

  5. 【Git从青铜到王者】第三篇:Git的基础

    系列文章目录 文章目录 系列文章目录 前言 一.获取 Git 存储库 1.在现有目录中初始化存储库 2.克隆现有存储库 二.Git记录每次更新到仓库 1.记录每次更新到仓库 2.检查当前文件状态 3. ...

  6. 精通Git(三)——Git分支机制

    文章目录 前言 分支机制简述 创建分支 切换分支 基本的分支与合并操作 基本的分支操作 基本的合并操作 基本的合并冲突处理 分支管理 与分支有关的工作流 长期分支 主题分支 远程分支 推送 跟踪分支 ...

  7. 伍六七带你学算法 进阶篇-三数之和

    三数之和 难度-中等 题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组. 注意 ...

  8. 远程控制virtual box虚拟机系统的三种方式

    远程控制virtual box虚拟机系统的三种方式[阅读时间:5分钟] 1.使用现有的远程控制软件 2.使用SSH连接 3.使用远程桌面控制虚拟机系统 对于把虚拟机安装在寝室笔记本的人来说,能够远程控 ...

  9. 2022-2028年中国三轴陀螺仪行业市场深度分析及投资前景分析报告

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了三轴陀螺仪行业相关概述.中国三轴陀螺仪行业运行环境.分析了中国三轴陀 ...

最新文章

  1. ODBC访问EXCEL
  2. go int 转string_go 变量传递和切片
  3. HTTPS加密解密过程
  4. 《游戏设计师修炼之道:数据驱动的游戏设计》一3.2 漏洞管理计划和技术开发...
  5. 用Java写一个递归遍历目录下面的所有文件
  6. 挑选了适合测试边界的汉字及截图
  7. C# 实现获取网络时间
  8. 数字信号处理(4)- 自适应滤波器
  9. 陆游书法真迹,堪称书法大家!
  10. 一点浩然气,千里快哉风
  11. CorelDRAW X4精简版序列号大家为何对其情有独钟?x8
  12. qlikview连接mysql_QlikView安装
  13. html实现文件的下载
  14. Redis学习之setex命令
  15. Eigen中四元数Quaterniond的初始
  16. 向服务器备份文件格式,备份服务器
  17. 分享 | 物体检测和数据集
  18. 卷积 对图像进行卷积操作 卷积神经网络
  19. 打击恶意劫持_百度移动搜索烽火算法 2.0
  20. (私人收藏)[开发必备]最全JQuery离线快速查找手册(可查询可学习,带实例)

热门文章

  1. 基于STM32单片机的风力摆控制系统
  2. 设计模式常用的七大原则
  3. 硬件相关技术资料分享
  4. 软件测试面试题:关闭浏览器中quit和close的区别
  5. Matlab编程之混沌系统李雅普诺夫指数分析
  6. java订单派单规则_重点解读 | 什么是派单?派单的好处有哪些?
  7. 18 个坏习惯,你一定要抛弃
  8. Undirected Vertex Geography
  9. 大数据与云计算学习(1)
  10. autium pcb手动布线_画PCB时,一些非常好的布线技巧