วิธีตั้งค่า Meld เป็น git mergetool


98

ฉันได้ตั้งค่า:

git config --global merge.tool meld
git config --global mergetool.meld.path c:/Progra~2/meld/bin/

บน "git mergetool" มันเขียนว่า:

Hit return to start merge resolution tool (meld):
The merge tool meld is not available as 'c:/Progra~2/meld/bin/'

ฉันได้ลองแล้ว:

  • / c / Progra ~ 2 / meld / bin /
  • "/ c / ไฟล์โปรแกรม (x86) / meld / bin /"
  • "c: / ไฟล์โปรแกรม (x86) / meld / bin /"

ผลลัพธ์ก็เหมือนกัน

เมื่อฉันไปที่ C: / Program files (x86) / meld / bin / และเรียกใช้

python meld

เครื่องมือทำงาน



คัดลอกวางบางส่วนของ.gitconfigจาก: marcin-chwedczuk.github.io/use-meld-as-git-merge-diff-tool
csharpfolk

ที่เกี่ยวข้อง: "Configuring diff tool with .gitconfig": stackoverflow.com/a/6412645/4561887 (สำหรับ meld ให้แทนที่vimdiffด้วยmeldในคำตอบนี้)
Gabriel Staples

โปรดแสดงความคิดเห็นและลงคะแนนให้กับปัญหาต้นน้ำเพื่อให้ผู้ใช้ในอนาคตไม่จำเป็นต้องกังวลเกี่ยวกับเรื่องนี้
Franklin Yu

คำตอบ:


75

คุณสามารถใช้เส้นทาง unix ที่สมบูรณ์เช่น:

PATH=$PATH:/c/python26
git config --global merge.tool meld
git config --global mergetool.meld.path /c/Program files (x86)/meld/bin/meld

นี่คือสิ่งที่อธิบายไว้ใน " How to get meld working with git on Windows "

หรือคุณสามารถใช้วิธีการห่อหุ้มที่อธิบายไว้ใน " ใช้ Meld กับ Git บน Windows "

# set up Meld as the default gui diff tool
$ git config --global  diff.guitool meld

# set the path to Meld
$ git config --global mergetool.meld.path C:/meld-1.6.0/Bin/meld.sh

ด้วยสคริปต์meld.sh:

#!/bin/env bash
C:/Python27/pythonw.exe C:/meld-1.6.0/bin/meld $@

abergmeierกล่าวถึงในความคิดเห็น :

ฉันต้องทำ:

git config --global merge.tool meld
git config --global mergetool.meld.path /c/Program files (x86)/Meld/meld/meldc.exe

โปรดทราบว่า meldc.exe ถูกสร้างขึ้นโดยเฉพาะเพื่อเรียกใช้บน Windows ผ่านคอนโซล ดังนั้น meld.exe จะทำงานไม่ถูกต้อง


CenterOrbitกล่าวถึงในความคิดเห็นสำหรับ Mac OS เพื่อติดตั้งhomebrewจากนั้น:

brew cask install meld
git config --global merge.tool meld
git config --global  diff.guitool meld

3
สำหรับฉันฉันต้องทำ:git config --global merge.tool meld git config --global mergetool.meld.path /c/Program files (x86)/Meld/meld/meldc.exe
abergmeier

@abergmeier ตกลงฉันได้รวมความคิดเห็นของคุณไว้ในคำตอบเพื่อให้มองเห็นได้มากขึ้น
VonC

โซลูชันของ @ abergmeier ได้ผล นอกจากนี้บน windows git bash หากคุณทำtabคีย์มันจะแนะนำเส้นทางเพื่อให้ง่ายต่อการทำให้ถูกต้อง
Aswin Kumar

3
FYI บน Mac OSx: ติดตั้งhomebrewแล้ว:$ brew install homebrew/x11/meld $ git config --global merge.tool meld $ git config --global diff.guitool meld
CenterOrbit

@CenterOrbit ตกลงฉันได้รวมความคิดเห็นของคุณไว้ในคำตอบเพื่อให้มองเห็นได้มากขึ้น
VonC

25

สิ่งนี้ใช้ได้กับฉันใน Windows 8.1 และ Windows 10

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

7
git config --global mergetool.meld.path "c:\Program Files (x86)\meld\meld.exe"เมื่อใช้ PowerShell
Michael Blake

บางครั้งคุณอาจรีสตาร์ท git gui ของคุณหลังจากที่คุณ git config (เพื่อทำการเปลี่ยนแปลง)
Yohanes AI

12

ผสมผสาน 3.14.0

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

โปรดทราบว่านี่เป็นคำถามที่ถูกละทิ้ง ฉันไม่ได้จัดการกับเครื่องมือผสานมานานแล้วดังนั้นแม้ว่าคำตอบของคุณจะดีที่สุด แต่ฉันก็ไม่สามารถพิสูจน์ได้และทำเครื่องหมายเป็นคำตอบ
พอล

สวัสดีฉันได้ลองใช้แล้วและใช้งานได้ดี ในกรณีของฉันมันเป็น 'cmd' ซึ่งหายไปในการเรียก meld อย่างถูกต้อง
faidherbard

Meld ไม่ได้บันทึกไฟล์ที่ผสานอย่างถูกต้องสำหรับฉันเมื่อใช้เทมเพลตบรรทัดคำสั่งนี้ โปรดดูstackoverflow.com/a/40777256/768795สำหรับคำตอบที่ใช้งานได้
Thomas W

6

ฉันคิดว่าmergetool.meld.pathควรชี้ไปที่ไฟล์ปฏิบัติการแบบผสมผสานโดยตรง ดังนั้นคำสั่งที่คุณต้องการคือ:

git config --global mergetool.meld.path c:/Progra~2/meld/bin/meld

5

ไม่มีคำตอบอื่นใดที่ใช้ได้ผลสำหรับฉันอาจมาจากการลองใช้คำตอบทั้งหมดรวมกัน ฉันสามารถปรับคำตอบที่ยอมรับนี้ให้ทำงานร่วมกับ meld ได้ ตอนนี้ใช้งานได้กับฉันด้วย git 1.9.4, meld 3.14.0 และ windows 8.1

แก้ไข ~ / .gitconfig ให้ดูเหมือน:

[diff]
    tool = meld
    guitool = meld
[mergetool "meld"]
    path = c:/Program Files (x86)/Meld/Meld.exe
[difftool "meld"]
    path = c:/Program Files (x86)/Meld/Meld.exe

2

หลังจากติดตั้งhttp://meldmerge.org/ ฉันต้องบอก git ว่ามันอยู่ที่ไหน:

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

และดูเหมือนว่าจะได้ผล ทั้งการรวมและการทำให้แตกต่างกันด้วย "git difftool" หรือ "git mergetool"

หากมีคนประสบปัญหาเช่น Meld crash หลังจากเริ่มต้น (ข้อบ่งชี้ปัญหาด้วย python) คุณต้องตั้งค่า Meld / lib ให้กับตัวแปรสภาพแวดล้อมระบบของคุณดังต่อไปนี้ C:\Program Files (x86)\Meld\lib


1

ต้องใช้การเรียงสับเปลี่ยนเล็กน้อยเพื่อให้การทำงานร่วมกันบน windows สำหรับฉัน นี่คือ. gitconfig ปัจจุบันของฉัน:

[merge]
    conflictstyle = diff3
    tool = meld
[mergetool "meld"]
    cmd = \"C:\\Program Files (x86)\\Meld\\Meld.exe\" --auto-merge \"$LOCAL\" \"$BASE\" \"$REMOTE\" --output \"$MERGED\"

ลินุกซ์:

[merge]
    conflictstyle = diff3
    tool = meld
[mergetool "meld"]
    cmd = meld --auto-merge $LOCAL $BASE $REMOTE --output=$MERGED --diff $BASE $LOCAL --diff $BASE $REMOTE

ฉันเชื่อว่าการเพิ่มconflictstyle = diff3การเปลี่ยนแปลงข้อความอินไลน์เพื่อรวมเนื้อหา BASE ในไฟล์เอาต์พุตก่อนที่ meld จะเข้าถึงซึ่งอาจทำให้มันเริ่มต้นได้ ไม่แน่ใจ.

ตอนนี้เนื่องจากฉันตั้งข้อสังเกตว่า Meld รองรับการรวมสามทางแล้วจึงมีอีกทางเลือกหนึ่ง เมื่อตั้งค่ารูปแบบความขัดแย้งของคอมไพล์“ diff3” Meld จะพิมพ์“ (??)” บนบรรทัดที่แสดงเนื้อหาจาก BASE แหล่งที่มา

คุณสมบัติบรรทัดคำสั่ง meld บางอย่างที่ฉันชอบ:

  • --auto-merge ทำงานได้ดีมากในการเลือกสิ่งที่เหมาะกับคุณ (ไม่สามารถกันกระสุนได้ แต่ฉันคิดว่าเวลาที่บันทึกไว้นั้นคุ้มค่ากับความเสี่ยง)

  • คุณสามารถเพิ่มหน้าต่างพิเศษพิเศษได้ในคำสั่งเดียวกัน เช่น:

    --diff $BASE $LOCAL --diff $BASE $REMOTE

    จะเพิ่มอีกสองแท็บพร้อมกับแพตช์ท้องถิ่นและแพตช์ขาเข้าที่แตกต่างกัน สิ่งเหล่านี้มีประโยชน์มากในการดูแยกจากมุมมอง 3 ทางเพื่อดูความแตกต่างจากฐานในแต่ละสาขา ฉันไม่สามารถทำให้สิ่งนี้ทำงานบน windows ได้

  • --labelรุ่นบางส่วนของผสมช่วยให้คุณสามารถที่จะติดป้ายแท็บที่มี สิ่งนี้สำคัญกว่าก่อนที่ git จะแก้ไขชื่อของไฟล์ที่ส่งผ่านไปยัง meld เพื่อรวม local / base / remote

  • ลำดับของ--diffสามารถส่งผลต่อลำดับแท็บ ฉันมีปัญหาในเวอร์ชันเก่าบางรุ่นที่ใส่ส่วนต่างเพิ่มเติมก่อนเมื่อมีการใช้ diff 3 ทางหลักบ่อยกว่ามาก


0

สำหรับwindowsเพิ่มเส้นทางสำหรับ meld เป็นดังนี้:

 git config --global mergetool.meld.path C:\\Meld_run\\Meld.exe
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.