Windows에서 Meld와 Git mergetool


94

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를 ​​구성하는 방법을 알고 있습니까?


이것이 시도되는 점이 있는지 모르겠지만 KDiff3을 사용하고 내 gitconfig에 설정된 경로는 다음과 같습니다 .path = C : / Program Files (x86) /KDiff3/kdiff3.exe 및 C : \\ 등
— Fumler

1
문제를 해결할 수 있습니까?
— Roger

1
나는 할 수 없었다. 답변 중 하나는 아마 정확하지만 실제로 융합이 제대로 작동하도록 얻을 수 없기 때문에 나는 등 어떤 표시를 주저 해요 : - /
— 넬슨

@Nelson 마 걱정하지 아니하며 :( I 수없는
— abergmeier

향후 사용자가 이에 대해 걱정할 필요가 없도록 업스트림 문제에 댓글을 달고 투표 하십시오.
— Franklin Yu

답변:


152

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

그게 다야!


1
이 솔루션은 저에게
— 효과적이었습니다

1
이 솔루션은 Meld 3.16.2에서 저에게 효과적이며 성가신 백업을 제거하기 위해 git config --global mergetool.keepBackup false를 추가했습니다.
— Jay

2
어떤 이유로이 솔루션을 적용한 후 모든 것이 빨간색 (변경됨)으로 나타나고 이렇게해야했습니다.git config --global mergetool.meld.cmd '"C:\Program Files (x86)\Meld\Meld.exe" $BASE $LOCAL $REMOTE -o $MERGED'
— ihadanny

7
이 솔루션을 사용하면 Cannot import: GTK+및 DLL load failed.
— Juergen

4
@Juergen 이에 대한 대답은 경로 불일치가 진행되고 있다는 것입니다. lib 디렉토리에있는 libgirepository-1.0-1.dll을 한 디렉토리 위로 복사하고 (즉 Meld.exe와 같은 디렉토리) 시작하면 작동하는 것을 찾을 수 있습니다.
— demongolem

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

1
수정 사항이 솔루션을 망친 것 같습니다. 원래 버전이 저에게 효과가 있으므로 +1. 나는 그것이 경로 선없이 작동하는 것처럼 보였습니다.
— vossad01 2014 년

이것은 작은 따옴표 대신 백틱을 사용하고 슬래시-큰 따옴표 대신 작은 따옴표를 사용 cmd하지 않고 사용했을 때 저에게 path효과적이었습니다.
— sq33G

Win10 1903 및 WSL을 사용하여 이러한 구성 접근 방식을 시도했지만 git은 meld를 호출 할 수 없습니다. 나는 심볼릭 링크 결국 Program_Files_x86 -> 'Program Files (x86)/'및 사용[mergetool "meld"] path = /mnt/c/Program_Files_x86/Meld/Meld.exe
— 빌 호그에게

10

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

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

어쨌든 내가 고른 사용자 지정 설치 경로를 사용하면 정확하게 작동했습니다. 대부분의 가이드에서 사용하는 "path"와 여기에 지정된 "cmd"간에 차이가 있다는 점은 주목할 가치가 있습니다.
— FauxFaux 2013

나는 당신과 Martin의 솔루션을 모두 시도했지만 둘 다 작동하지 않았습니다. 다른 일이 벌어지고 있다고 생각합니다. 창이 열리고 즉시 닫히면 Meld가 저장소 대신 Meld의 설치 디렉토리를 가리키는 경로로 열립니다. Meld에 전달 된 arg로 인해 죽을 수 있으며 문제를 감지하고 기본 경로로 다시 시작합니까? ...이 문제를 해결하는 방법을 여기 파악하고있어하지만 난 잘 모르겠어요
— 넬슨

bin 폴더에있는 meld 파일이 아닌 meld.exe를 사용하고 있는지 확인하십시오. 나는 단순히 meld 파일을 사용하고 git이 임시 폴더에 파일을 넣을 기회가 있기 전에 응용 프로그램을 시작하는 문제가 있었던 것을 기억합니다.
— schuess

솔루션을 사용했지만 디렉토리 의 meld파일을 사용했으며 bin(실제로 파일 이름을 바꿨습니다 meld.py) 문제없이 작동했습니다.
— Jarrett 2013

7

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

4

이 페이지의 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 파일을 컴파일하여 생성 된 것으로 바꾸는 것입니다. 몇 가지 버전이 게시되어 있으므로 페이지 아래에서 가장 먼 곳에 스크립트를 다운로드하십시오.


3
이슈 트래커가 자동으로 이슈를 할당하도록 설정되지 않았기 때문에 댓글이 있다는 것을 놓쳤습니다. 나중에 이것을 찾는 Google 사용자를 위해; 이 문제가 수정되었습니다.
— Keegan 2013 년

4

나도 비슷한 문제에 직면했습니다. 사용 된 운영 체제는 Windows 10이며 다음 변경 사항이 저에게 효과적이었습니다. 경로 문제처럼 보입니다.

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

3

어떤 이유로 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

2

어떤 답변도 나를 위해 일하지 않았습니다. 나는 .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에서 커밋해야하며 충돌이 해결됩니다.

어떤 이유로 이것은 Meld 3.18.x에서만 작동했으며 Meld 3.20.x에서는 오류가 발생합니다.


0

위의 모든 것을 시도한 후 Meld를 ​​관리자로 실행하도록 설정하면 저에게 효과적이었습니다.

  1. Meld.exe를 마우스 오른쪽 버튼으로 클릭합니다.
  2. 속성 > 호환성으로 이동 하여 Run this program as an administrator확인란을 선택합니다.

내가받은 오류 c:\windows\temp\meld-*는 생성되지 않은 과 같은 임시 파일을 참조했습니다 . Meld의 권한을 높이는 것은 이제 git difftoolMeld 내에서 수동으로 실행되고 둘 다 작동하므로 트릭을 수행하는 것 같습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.