如何使git mergetool意识到diff标记

时间:2013-10-08 12:15:51

标签: git diff git-merge mergetool

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

1 个答案:

答案 0 :(得分:0)

好吧,我发现没有现成的解决方案,所以我最后编写了一个简单的包装器:

http://pietrobattiston.it/mergetooltool

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

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

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

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

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

为什么它比git mergetool更好因为你必须解决 冲突。

为什么它比gd mergetool更好用kdiff作为差异工具:因为你可以使用你喜欢的工具,因为在解决可解决的冲突时git比kdiff好一点。

相关问题