【问题标题】:How to setup the git mergetool with the --dir-diff option?如何使用 --dir-diff 选项设置 git mergetool?
【发布时间】:2013-04-01 11:43:54
【问题描述】:

difftool 有一个很好的用户友好选项来查看差异。它的 --dir-diff 选项 - 允许您随意浏览两个目录。

git mergetool 有一个非常笨拙和不友好的用户界面。解决合并冲突必须按照 git 给出的严格顺序来完成。

是否有可能设置类似的选项,例如 $ git difftool --dir-diff? 说 $ git mergetool --dir-merge 调用例如的目录比较温美格? 或者是否有另一种解决方案来提供用户友好的界面来解决多个文件合并冲突?

【问题讨论】:

  • 好问题!我认为这应该是可能的。我也讨厌你看不到有 30 个合并冲突:-/ 我认为 derb 提供了一种解决方法来查看文件。但是你不会一下子看到融合的所有变化。
  • 我同意,我在试用中使用了 sublime 合并,虽然我没有 git 自动打开它,但它会识别正在进行的合并并立即显示所有文件,这要好得多

标签: git


【解决方案1】:

有一个名为 meld 的简单 Python 程序,但是任何可视化的与三个窗格合并的东西都可以。

要将其用于合并解析,请安装它,并在 git 中的未解析合并中输入:$ git mergetool

更多关于某个主题的信息,您可以阅读:Painless Merge Conflict Resolution in Git

...我发现可用于执行合并的工具和界面并没有足够的能力让程序员有效地完成它们。通常情况下,程序员会简单地运行 git merge 并希望 git 能处理大部分的问题。在有冲突的大佬中,掌舵的人通常的合并策略是使用周围的上下文来粗略地猜测预期的程序应该是什么样子。

本文将有望证明,可以有一个更加衡量的过程来解决合并冲突,从而消除这种冒险操作的猜测......

【讨论】:

  • 据我所知,meld 只是一个像 p4merge 这样的合并工具。我不介意在一个文件中解决冲突。当我合并时,我得到例如10 个冲突文件
  • 据我所知,meld只是像p4merge这样的合并工具。我不介意在一个文件中解决冲突。当我合并时,我得到例如10 个冲突文件。如果我从 git mergetool 开始,git 将依次调用每个文件冲突触发,例如p4合并。我无法选择首先解决哪个冲突,第二个 - 我完全受 git 规定的顺序的约束。
  • 我理解这个问题的方式——也是我需要的——是当你使用git difftool -t meld --dir-diff时,首先你会在左右窗格中获得一个目录列表meld,通过颜色告诉你哪些文件发生了变化,哪些没有;然后你可以双击一个文件,你会在meld 中看到一个新标签,它比较左右窗格中的文件。我和 OP 一样,也想在 mergetool 中做同样的事情 - 不幸的是,这个答案并没有解释这一点。
【解决方案2】:

您可以将文件列表传递给git mergetool'

要获取未合并文件的列表,可以使用git ls-files --unmerged $DIR'

总之,做

git mergetool `git ls-files --unmerged $DIR`

【讨论】:

  • 如果我为每个文件单独打开 git mergetool -t meld ``git ls-files --unmerged $DIR```, I will still get meld`,那么我必须关闭 meld,然后再为下一个文件打开 meld 等 - 它不会显示并排比较目录 就像git difftool -t meld --dir-diff 一样,这就是OP 所要求的
猜你喜欢
  • 2023-04-04
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多