DiffMerge

主要还是用来对比学习用的 code 和自己写的 code。这个操作也挺简单的,就是下载,然后选中文件夹即可。

目前虽然要求注册(需要 19 美金好像),不过还是可以免费使用。

这款工具配置之后也能用在 Git 上,对本地/checked in,或是本地/remote的文件进行对比,这部分配置还没折腾过,原因后面说明。

下载地址如下:https://www.sourcegear.com/diffmerge/downloads.html

download site

DiffMerge三平台都有支持,除了 M1……大概因为 DiffMerge 版本更新并不是很勤快来着。

本地选择文件夹即可:

select folder

然后放对比的文件夹地址:

folder sources

这里会列举两个文件夹下的文件:

show files

点开文件后就能看到不同的地方:

diff files

同时也有保存的功能:

edit

总体来说比较适合教学用……对比人家写好的代码以及自己的代码然后研究为啥出错,毕竟如果只是单纯的对比 branch 上的区别,VSCode 的可视化就做的挺好的了,Intellij 更是可以列举所有的操作记录(Community Version 就可以)。

这款工具相对而言出来的年限也挺早了,我找到的最早记录都有二零零几年的事情了,最新的 4.2 也是 13 年的 release,对比其他 IDE 按月更新来说,确实频率很低了。真的要找好用的 Git 工具,电脑支持的情况下可以看看 Intellij 来着。

除此之外一点简单的配置:

config

如果是对比 Java 文件的话,可以在设置里面加上 *.class,毕竟这部分的文件是编译后的文件,就对比代码而言,没什么大用。

如果是 JS 项目的话,也可以使用 folder filters 去过滤 dist 下的文件,原因同上。

官方文档说是可以 match pattern,需要用 双括号 括起来,分隔符使用空格、逗号、分号都可以。

配置 Git Mergetool

我本来以为 DiffMerge 可以显示不同分支的 diff 的,没想到最后只是解决 merge conflict 的 GUI,稍微有一点失望……不过总算是补了一下,把配置做完了:

在这里插入图片描述

在这里插入图片描述

GUI 显示是这样的,不过说实话吧,现在很多 IDE 都自带可视化工具了,所以这个配置应该算……可选项……?

官网其实说的已经比较清楚了,以 mac 为例,目前的下载都是 DMG 而非 PKG,所以需要把 DMG 中的 Extras 这个文件夹抠出来:

在这里插入图片描述

随后执行官网上提供的脚本:

sudo cp Extras/diffmerge.sh /usr/local/bin/diffmerge
sudo chmod 755 /usr/local/bin/diffmerge
# 这个就算是 sudo 我还是遇到了权限问题,不知道是不是因为公司电脑的原因
sudo cp Extras/diffmerge.1 /usr/share/man/man1/diffmerge.1
sudo chmod 644 /usr/share/man/man1/diffmerge.1

随后运行下面的命令:

$ git config --global diff.tool diffmerge
$ git config --global difftool.diffmerge.cmd "/usr/local/bin/diffmerge \"\$LOCAL\" \"\$REMOTE\""
$ git config --global merge.tool diffmerge
$ git config --global mergetool.diffmerge.trustExitCode true
$ git config --global mergetool.diffmerge.cmd  "/usr/local/bin/diffmerge --merge --result=\"\$MERGED\" \"\$LOCAL\" \"\$BASE\" \"\$REMOTE\""

这样,在合并分支的时候,如果命令行提示出现有 merge conflict,就可以使用 git mergetool 去打开有冲突的文件去进行合并:
在这里插入图片描述

Reference

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐