繁体   English   中英

在 Windows 上使用 Meld 的 Git 合并工具

[英]Git mergetool with Meld on Windows

在 Linux 中,我最喜欢的合并工具是 Meld,我在使用或配置它以与 Git 一起工作时没有遇到任何问题。 但是,在 Windows 中,情况就不同了。

首先,我从我在这里找到的一个包中安装了 Meld: https : //code.google.com/p/meld-installer/

然后,我像这样配置了我的 .gitconfig 以支持 Meld 作为默认的合并工具

[merge]                                                      
    tool = meld                                                                         

[mergetool "meld"]                                           
    path = C:\\Program Files (x86)\\Meld\\meld\\meld.exe
    keepBackup = false                                   
    trustExitCode = false

因此,当我遇到冲突时,我会使用 git difftool 并且 Meld 实际上会打开。 但是,Git 写入以传递给 diff 工具的文件的路径不正确。 例如,即使 Git 在存储库目录(我从中调用 git mergetool 的位置)生成 BASE、LOCAL 和 REMOTE 文件,Meld 也会尝试打开可执行文件目录中的每个文件。

Meld 没有打开 C:\\repo\\roses.txt.LOCAL.2760.txt,而是尝试打开 C:\\Program Files (x86)\\Meld\\meld\\roses.txt.LOCAL.2760.txt。

有没有人遇到过这个问题或知道如何配置 Git/Meld 以在 Windows 中正常工作?

你为什么不在 Windows 上使用 git bash?

简单地安装meld后:

git config --global merge.tool meld
git config --global mergetool.meld.path "C:\Program Files (x86)\Meld\Meld.exe" <- path to meld here

就这样!

Schues,注意目录中的空格字符!

[merge]
    tool = meld
[mergetool "meld"]
    prompt = false
    keepBackup = false
    keepTemporaries = false
    path = C:/Program Files (x86)/Meld/Meld.exe
    cmd = \"/C/Program Files (x86)/Meld/Meld.exe\" \"$PWD/$LOCAL\" \"$PWD/$BASE\" \"$PWD/$REMOTE\" \"--output=$PWD/$MERGED\"

我遇到了完全相同的问题,发现我必须用蛮力才能让它工作。 这是我放在 .gitconfig 文件中的内容。 (注意我的 meld 可执行文件位于不同的位置)

[merge]
    tool = meld
[mergetool "meld"]
        cmd = "/c/Meld/meld/meld.exe $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED"

如何使用git difftool作为git difftool代替git diff (另请参见下面的git difftool屏幕截图):

1. 窗户:

下载并安装适用于 Windows 的 Git ,其中包括一个“Git Bash”类似 Linux 的终端,一旦您安装了适用于 Windows 的 Git,即可通过 Windows 资源管理器中任何文件夹中的右键单击菜单访问该终端。

从这里下载并安装 meld: https : //meldmerge.org/

然后,为了让您的git difftool meld ,您可以在 Git for Windows bash 终端中使用这两个命令(如 Arugin 所说),使用 Meld.exe 的正确路径:

git config --global merge.tool meld
git config --global mergetool.meld.path "C:\Program Files (x86)\Meld\Meld.exe"

或者你可以直接编辑你的C:\\Users\\YOUR_USER_NAME\\.gitconfig文件并将以下内容添加到它的末尾(注意这里强制使用双反斜杠 [ \\\\ ] 作为路径分隔符!):

[merge]
  tool = meld
[mergetool "meld"]
  path = C:\\Program Files (x86)\\Meld\\Meld.exe

现在在您的Git for Windows bash 终端中调用git difftool ,Meld 将作为您的默认 difftool 查看器打开! 如果您还不知道:您可以通过在 Windows 资源管理器中的文件夹中右键单击并转到 -->“Git Bash”或任何名称来在 Windows 中打开所述终端。

2.Linux:

如果没有别的,我也不妨将 Linux 说明也放在这里供我自己参考:

对于 Linux,它甚至更容易:

# 1. install meld
sudo apt update
sudo apt install meld
# 2. edit your ~/.gitconfig file (gedit GUI editor will open)
gedit ~/.gitconfig

然后添加到 .gitconfig 文件的底部:

[diff]
    tool = meld

而已! git difftool现在适用于 Linux Ubuntu!

3. Mac 操作系统

在 Mac OS 上安装 Meld: https : //superuser.com/questions/360007/how-to-install-meld-with-homebrew-on-mac-osx/1177575#1177575

Meld 的示例屏幕截图

https://i.stack.imgur.com/sNR7J.png

来源 在此处输入图片说明

Meld的用法

# 1. In place of `git diff`:
git difftool

# 2. Calling meld directly to compare two files:
meld path/to/file1.txt path/to/file2.txt

有关的:

  1. [我对git blametool回答] 是否有类似于 bzr qannotate 的 git blame gui?
  2. 从这里下载并安装 meld: https : //meldmerge.org/
  3. [我的回答] 如何让 Git 使用我选择的编辑器进行提交?
  4. [我的回购] https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles
  5. 在 Mac OS 上安装 Meld: https : //superuser.com/questions/360007/how-to-install-meld-with-homebrew-on-mac-osx/1177575#1177575

我在此页面上的 meld 安装程序的错误报告中找到了一个解决方案:

https://code.google.com/p/meld-installer/issues/detail?id=11

据我了解,问题在于meld.exe 程序(通过python 解释器运行meld)不必要地将命令的工作目录设置为meld.exe 的工作目录。 当作为命令行参数传递时,这会导致相对路径被错误解释。

解决方案是将提供的meld.exe 替换为通过编译meld.ahk 文件生成的meld.exe,使用AHK2EXe(AutoHotKey 脚本-> exe)。 只需下载页面最下方的脚本,因为那里已经发布了几个版本。

我也遇到了类似的问题。使用的操作系统是 Windows 10,以下更改对我有用。似乎更像是路径问题

git config --global mergetool.meld.path "/c/Program Files (x86)/Meld/Meld.exe" <- path to meld here

出于某种原因,在 Windows 10 中,在安装过程中无法正确设置 PATH 环境变量,因此引发了一个奇怪的异常,说它无法找到“C:\\Program Files (x86)/”下的某些 .dll Meld/bin”目录。

我的解决方法是,在 git bash 中执行:

export PATH=$PATH:"/C/Program Files (x86)/Meld/lib" 

或者添加到windows PATH

C:\Program Files (x86)/Meld/bin

没有一个答案对我有用。 我在 .gitconfig-file 中得到了这个:

[merge]
  tool = meld
[mergetool "meld"]
  cmd = 'C:/Program Files (x86)/Meld/Meld.exe' $LOCAL $BASE $REMOTE --output=$MERGED
[mergetool]
  prompt = false

git merge mybranch以冲突结束后,您只需键入git mergetool并打开git merge mybranch 保存后,您必须在 git 中提交并解决冲突。

出于某种原因,这只适用于 Meld 3.18.x,Meld 3.20.x 给了我一个错误。

在尝试了上述所有方法后,将 Meld 设置为以管理员身份运行对我有用。

  1. 右键单击 Meld.exe
  2. 转到“属性” >“兼容性”并选中Run this program as an administrator复选框

我收到的错误引用了像c:\\windows\\temp\\meld-*这样的临时文件,这些文件没有被创建。 提升 Meld 的权限似乎可以解决问题,因为它现在可以与git difftool并在 Meld 中手动运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM