如何使用 --dir-diff 选项设置 git mergetool?

10

difftool有一个非常用户友好的选项,可以查看差异。这就是--dir-diff选项——允许您任意浏览两个目录。

git mergetool具有非常笨拙和不友好的用户界面。解决合并冲突必须按照Git给出的严格顺序进行。

是否有设置类似的选项的可能性?

$ git difftool --dir-diff

$ git mergetool --dir-merge

如何调用目录比较功能(例如WinMerge)?或者有没有其他解决方案提供用户友好的界面来解决多个文件合并冲突的问题?


好问题!我认为这应该是可能的。我也讨厌你看不到有30个合并冲突 :-/ 我认为deterb已经提供了一个解决方法来查看文件。但你不能一次在meld中看到所有的更改。 - jaques-sam
我同意,我在试用Sublime Merge时,虽然我没有启用git自动打开,但它会识别正在进行的合并操作,并一次性显示所有文件,这样更好。 - chrispepper1989
2个回答

1
你可以向git mergetool传递文件列表。
要获取未合并文件的列表,可以使用git ls-files --unmerged $DIR
总之,请执行以下操作:
git mergetool `git ls-files --unmerged $DIR`

3
如果我运行git mergetool -t meld``git ls-files --unmerged $DIR命令,每个文件都会单独打开meld窗口,然后我需要关闭meld,接下来再为下一个文件重新打开meld - 这与使用git difftool -t meld --dir-diff的情况不同,后者可以显示整个目录的并排比较结果,这也是发帖者所询问的。 - sdbbs

0

有一个简单的Python程序叫做meld,但任何可视化三个窗格合并的工具都可以。

要将其用于合并冲突解决,请先安装它,然后在git中未解决的合并状态下,键入:$ git mergetool

更多关于此主题的信息,请参阅:Git中无痛合并冲突解决

......我发现为执行合并而提供的工具和界面不能充分地装备程序员有效地执行它们。通常,程序员只会运行git merge,并希望git能够处理大部分块。对于冲突的块,人类驾驶员通常使用周围的上下文来粗略猜测预期的程序应该是什么样子。

本文将希望演示可以有一个更加量化的过程来解决合并冲突,从而消除这种风险操作的猜测工作......


据我所知,meld只是像p4merge一样的合并工具。我不会费心在一个文件中解决冲突。当我合并时,我会得到例如10个冲突文件。 - Jurg Zbinden
4
据我所知,Meld只是像p4merge这样的合并工具。我不会费心在一个文件中解决冲突。当我进行合并时,我会得到10个有冲突的文件。如果我从git mergetool开始,git将依次调用每个文件的冲突,例如p4merge。我无法选择先解决哪个冲突,哪个冲突排第二 - 我完全受制于git规定的顺序。 - Jurg Zbinden
3
我理解这个问题的方式 - 和我需要的一样 - 是当你使用 git difftool -t meld --dir-diff 时,首先在 meld 的左右两个窗格中得到一个目录列表,通过颜色告诉你哪些文件已更改和哪些文件未更改;然后您可以双击一个文件,您将在 meld 中获得一个新选项卡,该选项卡会比较左右两个窗格中的文件。和提问者一样,我也希望在 mergetool 中进行相同操作 - 不幸的是,这个回答没有解释如何实现。 - sdbbs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接