Git与Windows上的Meld合并工具

Nel*_*son 83 git meld

在Linux中,我最喜欢的合并工具是Meld,我使用或配置它与Git一起工作时没有任何问题.然而,在Windows中它是一个不同的故事.

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

然后,我配置了我的.gitconfig,以支持Meld作为默认的mergetool

[merge]                                                      
    tool = meld                                                                         

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

所以,当我遇到冲突时,我会做git difftool而Meld确实打开了.但是,Git写入传递给diff工具的文件的路径不正确.例如,即使Git在存储库目录(我称之为git mergetool的位置)中生成BASE,LOCAL和REMOTE文件,Meld也会尝试打开可执行文件目录中的每个文件.

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

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

Aru*_*gin 138

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

安装后简单:

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

就这样!

  • 通过这种解决方案,我得到“无法导入:GTK +”和“ DLL加载失败”。 (6认同)
  • @Juergen答案是路径不匹配。如果要将lib目录中的libgirepository-1.0-1.dll复制到一个目录(与Meld.exe相同的目录)上并启动,您会发现一切正常, (3认同)
  • 这个解决方案对我有用我也在下面的命令下做,每次打开工具时都不提示我 git config --global mergetool.prompt false (2认同)
  • 这个解决方案适用于 Meld 3.16.2,还添加了 git config --global mergetool.keepBackup false 以删除那些讨厌的备份。 (2认同)
  • 由于某种原因,在应用此解决方案后,所有内容都显示为红色(已更改),我必须执行此操作:`git config --global mergetool.meld.cmd'"C:\ Program Files(x86)\ Meld\Meld.exe "$ BASE $ LOCAL $ REMOTE -o $ MERGED' (2认同)

小智 26

Schuess,小心目录中的空格字符!

[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'
Run Code Online (Sandbox Code Playgroud)


sch*_*ess 10

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

[merge]
    tool = meld
[mergetool "meld"]
        cmd = "/c/Meld/meld/meld.exe $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE --output=$PWD/$MERGED"
Run Code Online (Sandbox Code Playgroud)


Gab*_*les 10

如何使用 meldgit difftool代替git diff(另请参阅下面的 meld 屏幕截图):

1. 窗户:

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

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

然后,使meld你的git difftool,你可以使用这两个命令,Git的内部用于Windows的bash终端(如Arugin说),使用到Meld.exe正确的路径:

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

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

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

现在调用git difftool您的Git for Windows bash 终端,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
Run Code Online (Sandbox Code Playgroud)

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

[diff]
    tool = meld
Run Code Online (Sandbox Code Playgroud)

就是这样!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
Run Code Online (Sandbox Code Playgroud)

有关的:

  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