DiffMerge 工具记录

Posted GoldenaArcher

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DiffMerge 工具记录相关的知识,希望对你有一定的参考价值。

DiffMerge

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

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

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

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

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

本地选择文件夹即可:

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

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

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

同时也有保存的功能:

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

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

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

如果是对比 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

以上是关于DiffMerge 工具记录的主要内容,如果未能解决你的问题,请参考以下文章

Git在Windows环境下配置Diff以及Merge工具---DiffMerge

P4Merge 和 DiffMerge 之间的主要区别

DiffMerge在第三方工具中命令配置

如何使用 msysgit / gitk 设置 DiffMerge?

apache_conf 将DiffMerge配置为默认git mergetool

个人头像人工智能生成工具,上线一天就已赚了1万美金