【问题标题】:How do I use Meld as a merge tool with Sourcetree on Windows?如何在 Windows 上使用 Meld 作为 Sourcetree 的合并工具?
【发布时间】:2015-04-17 00:18:08
【问题描述】:

我的.gitconfig 文件中有以下内容:

[user]
    name = myname
    email = myname@gmail.com
[core]
    autocrlf = true
    excludesfile = C:\\Users\\myname\\Documents\\gitignore_global.txt
[diff]
        tool = meld
[difftool "meld"]
        cmd = "C:/Program Files (x86)/Meld/meld/meld.exe"
        prompt = false
[merge]
        tool = meld

[mergetool "meld"]
        cmd = "C:/Program Files (x86)/Meld/meld/meld.exe"
[difftool "sourcetree"]
    cmd = "C:/Program Files (x86)/Meld/meld/meld.exe $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE"
[mergetool "sourcetree"]
    cmd = 'C:/Program Files (x86)/Meld/meld/meld.exe' \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
    trustExitCode = true

在 Sourcetree 中,我有以下设置:

但是,当我右键单击 Sourcetree 上的文件进行外部比较时,我能够打开 Meld,但文件的内容根本没有显示。

我在设置中做错了什么?

【问题讨论】:

    标签: atlassian-sourcetree meld


    【解决方案1】:

    我觉得现有的答案略微偏离了重点。这是我自己的狗粮:

    参数详情:

    Diff:  $LOCAL $REMOTE
    Merge: $LOCAL $BASE $REMOTE --auto-merge --output=$MERGED
    

    对于External Diff,您需要从参数列表中删除 $BASE。

    对于 3 路合并,您需要点击 External Merge Tool 选项,该选项仅在存在任何未解决的冲突时可用。

    如果您不限于Sourcetree + Meld,我认为Git Extensions + KDiff3 套件也可能是一个不错的开源替代方案。

    【讨论】:

    • 顺便说一句,根据其他人的说法,Meld“三向比较”并不是真正的三向合并,因为三向合并需要 4 个窗口:基础、本地、远程、合并跨度>
    • 您应该将参数粘贴到您的答案中。目前尚不清楚后一个示例中是否有更多参数。如:$LOCAL $BASE $REMOTE --auto-merge --output=$MERGED
    • 那么,参数应该是屏幕截图中的参数还是文本中的参数?
    • @Andrew 文中的那个比较详细。
    【解决方案2】:

    为了实现真正的 3 路合并,此处使用的实际设置是:只读 THEIRS 和 MINE 选项卡:

    $LOCAL $BASE $REMOTE --auto-merge --output=$MERGED
    

    注意--output之后的=

    通过在 cmets 中挖掘这个问题的第二个答案Git merging using Meld,我终于得到了这个命令。

    【讨论】:

      【解决方案3】:

      对于 OS X,它看起来像这样:

      • 差异命令:/Applications/Meld.app/Contents/MacOS/meld

        • 参数:$LOCAL $REMOTE
      • 合并命令:/Applications/Meld.app/Contents/MacOS/meld

        • 参数:$LOCAL $BASE $REMOTE --auto-merge --output=$MERGED

      附: 您可能还必须在融合首选项中配置 $local 和 $ remote 的顺序..

      要从命令行使用它,您必须通过 brew 安装它: brew install meld

      【讨论】:

      • 使用来自 [github.com/yousseb/meld/releases/] 的预构建 Meld.app 我需要将 Diff 命令设置为:/Applications/Meld.app/Contents/MacOS/meld
      • 对我来说不是开箱即用的。需要使用:$LOCAL $REMOTE 用于差异参数。
      • 我必须先执行brew tap homebrew/cask,然后再执行brew cask install meld 才能在 OSX 上安装它。现在测试一下,谢谢!
      • 你为什么使用@LOCAL@REMOTE??不应该是$LOCAL$REMOTE吗??
      • 如果通过 brew 安装,我使用的 diff 和 merge 命令是:/usr/local/bin/meld 在我的 osx 上,这可以工作
      【解决方案4】:

      尝试将 meld.exe 的位置添加到您的 PATH(例如 C:\Program Files (x86)\Meld),然后在 Diff 命令 中输入 meld 而不是完整路径.请参阅要点How to use meld with Sourcetree on Windows

      【讨论】:

        【解决方案5】:

        如果您不想修改 PATH 环境变量,可以使用 DOS 兼容的短名称:

        C:\Progra~1 = C:\Program Files
        C:\Progra~2 = C:\Program Files (x86)
        

        这避免了路径中引起麻烦的空格,并且与 Sourcetree 配合得很好。这是hackish,但它有效。然后你可以使用这样的东西作为 Meld 的路径:

        C:\Progra~1\Meld\meld.exe
        

        可能无法保证 Progra~1 映射到 64 位目录,因此您可能需要试验哪个映射到哪个目录。

        【讨论】:

          猜你喜欢
          • 2013-01-27
          • 1970-01-01
          • 2011-04-20
          • 2020-03-31
          • 2011-01-17
          • 1970-01-01
          • 1970-01-01
          • 2018-03-27
          • 1970-01-01
          相关资源
          最近更新 更多