[git] Windows에서 Meld와 Git mergetool

Linux에서 내가 가장 좋아하는 병합 도구는 Meld이며 Git에서 작동하도록 사용하거나 구성하는 데 문제가 없었습니다. 그러나 Windows에서는 다른 이야기였습니다.

먼저 https://code.google.com/p/meld-installer/ 에서 찾은 번들에서 Meld를 ​​설치했습니다.

그런 다음 Meld를 ​​기본 병합 도구로 지원하도록 .gitconfig를 구성했습니다.

[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는 실행 파일의 디렉토리에서 각 파일을 열려고합니다.

C : \ repo \ roses.txt.LOCAL.2760.txt를 여는 대신 Meld는 C : \ Program Files (x86) \ Meld \ meld \ roses.txt.LOCAL.2760.txt를 열려고합니다.

누구든지 이전에이 문제를 겪었거나 Windows에서 올바르게 작동하도록 Git / Meld를 ​​구성하는 방법을 알고 있습니까?



답변

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

그게 다야!


답변

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\"


답변

나는 똑같은 문제가 있었고 그것이 작동하도록 내 방식대로 무차별 대입해야한다는 것을 알았습니다. 여기에 .gitconfig 파일에 넣은 내용이 있습니다. (내 meld 실행 파일은 다른 위치에 있습니다)

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


답변

Windows :

Meld.exe에 대한 적절한 경로를 사용하여 다음 두 명령 ( Arugin이 말한대로 )을 사용할 수 있습니다 .

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 difftoolWindows 용 Git Bash를 호출 하면 Meld가 기본 difftool 뷰어로 열립니다.


리눅스 :

2019 년 9 월 20 일 업데이트 :
-다른 것이 없다면 여기에 내 자신의 참조를 위해 Linux 버전도 넣을 수 있습니다.

Linux의 경우 매우 쉽습니다.

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

그런 다음 .gitconfig 파일의 맨 아래에 추가하십시오.

[diff]
    tool = meld

그게 다야! git difftool이제 Linux Ubuntu에서 작동합니다!

관련 :

  1. 여기에서 meld를 다운로드하여 설치하십시오 : https://meldmerge.org/
  2. 커밋에 내가 선택한 편집기를 Git에서 사용하도록하려면 어떻게해야합니까?
  3. https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles


답변

이 페이지의 meld 설치 프로그램의 버그 보고서에서 해결책을 찾았습니다.

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

내가 아는 한 문제는 meld.exe 프로그램 (python 인터프리터를 통해 meld를 실행)이 명령의 작업 디렉토리를 meld.exe의 작업 디렉토리로 불필요하게 설정한다는 것입니다. 이로 인해 명령 줄 인수로 전달 될 때 상대 경로가 잘못 해석됩니다.

해결책은 제공된 meld.exe를 AHK2EXe (AutoHotKey 스크립트-> exe)를 사용하여 meld.ahk 파일을 컴파일하여 생성 된 것으로 바꾸는 것입니다. 몇 가지 버전이 게시되어 있으므로 페이지 아래에서 가장 먼 곳에 스크립트를 다운로드하십시오.


답변

나도 비슷한 문제에 직면했습니다. 사용 된 운영 체제는 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