Meld 是我处理代码和数据文件的必备工具之一。它是一款图形化 diff 工具,因此,如果您曾经使用过 diff 命令并努力理解其输出,Meld 将会助您一臂之力。
以下是来自该项目网站的精彩描述
"Meld 是一款面向开发人员的可视化 diff 和合并工具。Meld 帮助您比较文件、目录和版本控制项目。它提供文件和目录的双向和三向比较,并支持许多流行的版本控制系统。
"Meld 帮助您审查代码更改并理解补丁。它甚至可能帮助您弄清楚您一直避免的合并中发生了什么。"
您可以使用以下命令在 Debian/Ubuntu 系统(包括 Raspbian)上安装 Meld
$ sudo apt install meld
在 Fedora 或类似系统上,命令是
$ sudo dnf install meld
Meld 是跨平台的——有一个使用 Chocolately 包管理器的 Windows 安装包。虽然它在 macOS 上未获得官方支持,但有 适用于 Mac 的构建版本,您可以使用 Homebrew 安装它,命令如下
$ brew cask install meld
请访问 Meld 的主页查看其他选项。
Meld 与 diff 命令的比较
如果您有两个相似的文件(也许其中一个是另一个文件的修改版本)并且想要查看它们之间的更改,您可以运行 diff 命令以在终端中查看它们的差异

此示例显示了 conway1.py 和 conway2.py 之间的差异。它显示我
- 删除了 shebang 和第二行
- 从类声明中删除了 (object)
- 向类添加了文档字符串
- 在方法中交换了 alive 和 neighbours == 2 的顺序
这是使用 meld 命令的相同示例。您可以从命令行运行相同的比较,命令如下
$ meld conway1.py conway2.py

清晰多了!
您可以通过单击箭头轻松查看更改并合并文件之间的更改(它们是双向工作的)。您甚至可以实时编辑文件(Meld 兼作一个简单的文本编辑器,在您键入时进行实时比较)——只需确保在关闭窗口之前保存即可。
您甚至可以比较和编辑三个不同的文件

Meld 的 Git 感知能力
希望您正在使用像 Git 这样的版本控制系统。如果是这样,您的比较不是在两个不同的文件之间,而是查找当前工作文件与 Git 已知文件之间的差异。Meld 理解这一点,因此如果您运行 meld conway.py,其中 conway.py 是 Git 已知的,它将显示自上次 Git 提交以来所做的任何更改

您可以看到在当前版本(右侧)和仓库版本(左侧)中所做的更改。您可以看到我自上次提交以来删除了一个方法并添加了一个参数和一个循环。
如果您运行 meld .,您将看到当前目录(或整个仓库,如果您在它的根目录中)中的所有更改

您可以看到一个文件已修改,另一个文件未版本化(意味着它是 Git 新增的,因此我需要在比较之前 git add 该文件),以及许多其他未修改的文件。顶部图标提供了各种显示选项。
您还可以比较两个目录,这有时很方便

结论
即使是普通用户也可能觉得 diff 的比较难以理解。我发现 Meld 提供的可视化效果在排除文件之间更改的问题方面有很大帮助。最重要的是,Meld 具有一些有用的版本控制意识,并帮助您跨 Git 提交进行比较,而无需过多考虑。试试 Meld,让故障排除变得更轻松。
本文最初发布在 Ben Nuttall 的 Tooling 博客 上,并经许可重复使用。
6 条评论