2

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

4

1 回答 1

1

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

http://pietrobattiston.it/mergetooltool

它是这样工作的:git 告诉你它在文件“conflicted.txt”中发现了一个冲突。它在其中留下标记,分隔不同的版本。

您调用“/path/to/mergetooltool.py conflicted.txt”,它会解析“conflicted.txt”,识别标记,然后简单地创建两个单独的文件,每个版本一个。

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

然后,您可以执行“git add conflicted.txt”和(如果您没有其他冲突文件)“git commit”,您就完成了。

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

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

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

于 2014-01-22T13:07:13.110 回答