如何让 git 合并工具知道差异标记



Git mergetool是一个很棒的命令。但是,我觉得很烦人的是,它显示了与 BASE 相关的所有差异(可能是数百个(,而不仅仅是冲突(通常只是几个(。这个答案(提示一(提供了一个解决方案...然而,这是手动的(以 git merge 的输出为例,使用其块创建三个不同的文件,比较它们(。我当然愿意花半个小时为我最喜欢的视觉差异编辑应用程序编写一个包装器,该应用程序会自动执行此操作。但是已经有办法实现这一目标了吗?

好吧,我没有找到现成的解决方案,所以我最终编写了有问题的简单包装器:

http://pietrobattiston.it/mergetooltool

以下是它的工作原理:git 告诉您它在文件"conflicted.txt"中发现了冲突。它在其中留下标记,分隔不同的版本。

你调用"/path/to/mergetooltooltool.py conflicted.txt",它解析"conflicted.txt",识别标记,并简单地创建两个单独的文件,每个版本一个。

然后,它会打开您的差异 GUI(我使用 meld,您可以简单地将你的 GUI 设置在第 9 行(,让您解决冲突(您要使用的版本应保留在左窗格中,显示"conflicted.txt.local"的版本(,当您关闭时,将合并的版本放回"冲突.txt"。

然后你可以做"git add conflicted.txt"和(如果你没有其他冲突的文件("git commit",你就完成了。

为什么它比纯 git 更好:嗯,这取决于口味,但我发现差异 GUI 很方便。

为什么它比 git mergetool 更好:因为您只需要解决冲突。

为什么它比 git mergetool 和 kdiff 作为差异工具更好:因为您可以使用自己喜欢的工具,并且因为 git 在解决可解决的冲突方面比 kdiff 好一点。

最新更新