विंडोज पर Meld के साथ Git mergetool


93

लिनक्स में, मेरा पसंदीदा मर्ज टूल Meld है, और मुझे Git के साथ काम करने के लिए इसका उपयोग करने या इसे कॉन्फ़िगर करने में कोई समस्या नहीं है। हालाँकि, विंडोज में यह एक अलग कहानी रही है।

सबसे पहले, मैंने यहां मिली एक बंडल से मेल्ड को स्थापित किया: https://code.google.com/p/meld-installer/

फिर, मैंने अपने .itconfig को कॉन्फ़िगर किया, ताकि डिफ़ॉल्ट मेरिजेट के रूप में मेल्ड का समर्थन किया जा सके

[merge]                                                      
    tool = meld                                                                         

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

इसलिए, जब मेरा कोई टकराव होता है, तो मैं difftool git करता हूं और Meld वास्तव में खुला रहता है। हालाँकि, जिन फ़ाइलों के लिए Git लिखता है, वह अलग टूल में पास करने के लिए गलत है। उदाहरण के लिए, भले ही Git रिपॉजिटरी डायरेक्टरी (जिस स्थान से मुझे git मेरिजेट कहा जाता है) में BASE, LOCAL और REMOTE फाइल्स जेनरेट करता है, Meld एक्जीक्यूटेबल की डायरेक्टरी में उन फाइलों में से प्रत्येक को खोलने की कोशिश करता है।

C: \ repo \ roses.txt.LOCAL.2760.txt खोलने के बजाय, Meld C: \ Program Files (x86) \ Meld \ meld \ roses.txt.LOCAL.2760.txt खोलने का प्रयास करता है।

क्या कोई इससे पहले भागा है या यह जानता है कि विंडोज में सही तरीके से काम करने के लिए Git / Meld को कैसे कॉन्फ़िगर किया जाए?


मुझे पता नहीं है कि यह कोशिश करने का कोई मतलब है, लेकिन मैं KDiff3 का उपयोग करता हूं, और मेरे gitconfig में स्थापित पथ है: path = C: / Program Files (x86) /KDiff3/kdiff3.exe और C: \\ आदि
फूमर

1
क्या आप समस्या को हल कर सकते हैं?
रोजर

1
मैं नहीं कर पाया हूं। उत्तर में से एक शायद सही है, लेकिन मैं किसी भी तरह से चिह्नित करने में संकोच कर रहा हूं क्योंकि मुझे वास्तव में ठीक से व्यवहार करने के लिए मेल्ड नहीं मिल सकता है: - /
नेल्सन

@ नेल्सन चिंता न करें, न ही मैं कर सकता हूँ :(
abergmeier

कृपया टिप्पणी करें और अपस्ट्रीम मुद्दे पर वोट करें ताकि भविष्य के उपयोगकर्ता को इस बारे में चिंता करने की आवश्यकता न हो।
फ्रैंकलिन यू

जवाबों:


151

आप विंडोज के लिए गिट बश का उपयोग क्यों नहीं करते हैं?

बस मेल्ड स्थापित करने के बाद:

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

बस इतना ही!


इस समाधान ने मेरे लिए काम किया मैंने यह भी करने के लिए नीचे कमांड किया था मुझे हर बार यह संकेत देने के लिए नहीं कि यह टूल
गेट

1
इस समाधान ने मेरे लिए Meld 3.16.2 के साथ काम किया, उन pesky बैकअप को हटाने के लिए git config --global mergetool.keepBackup को भी जोड़ा।
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
@ जार्जेन इसका जवाब यह है कि एक रास्ता बेमेल है। यदि आप libgirepository-1.0-1.dll को कॉपी करने के लिए थे, जो कि आपकी लीबी डाइरेक्टरी में एक डायरेक्टरी अप (जो कि Meld.exe जैसी ही डायरेक्टरी है) और शुरू करते हैं, तो आपको काम करने वाली चीजें
मिलेंगी

26

शूज, निर्देशिका में अंतरिक्ष चरित्र के लिए सावधान रहें!

[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

यह मेरे लिए तब काम करता था जब मैं cmdबिना pathउद्धरण के उपयोग करता था और एकल उद्धरणों के बजाय बैकलैक्स का उपयोग करता था, स्लैश-दोहरे उद्धरणों के बजाय एकल उद्धरण।
sq33G

Win10 1903 और WSL के साथ, मैंने इन कॉन्फिग एप्रोच का एक गुच्छा आज़माया और git मेल्ड को आमंत्रित नहीं कर सका। मैंने सहानुभूति समाप्त की Program_Files_x86 -> 'Program Files (x86)/'और प्रयोग किया[mergetool "meld"] path = /mnt/c/Program_Files_x86/Meld/Meld.exe
बिल होआग

10

मुझे ठीक वैसी ही समस्या थी और मैंने पाया कि मुझे इसे काम करने के लिए मजबूर करना पड़ा। यहाँ मैं अपनी .gitconfig फ़ाइल में क्या रखा है। (ध्यान दें मेरा मेल निष्पादन योग्य एक अलग स्थान पर है)

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

ठीक है कि मेरे लिए ठीक काम किया, कस्टम स्थापित पथ के साथ मैं वैसे भी उठाया था। यह ध्यान देने योग्य है कि "पथ" के बीच एक अंतर है, जो कि अधिकांश मार्गदर्शक उपयोग करते हैं, और "cmd" जो यहां निर्दिष्ट है।
FauxFaux

मैंने तुम्हारा और मार्टिन के समाधान दोनों का प्रयास किया है और न ही काम किया है। मुझे लगता है कि कुछ और चल रहा है। एक विंडो खुलती है और फिर तुरंत बंद हो जाती है, और फिर मेलो रेपो के बजाय मेल्ड की इंस्टॉलेशन डायरेक्टरी की ओर इशारा करते हुए रास्तों से खुलता है। मेल्ड को पारित किया जा सकता है कि यह मरने का कारण बन सकता है और फिर यह समस्या का पता लगाता है और डिफ़ॉल्ट पथ के साथ स्थानांतरित करता है? मैं यहाँ जा रहा हूँ, लेकिन मुझे यकीन नहीं है कि यह कैसे का निवारण कर सकता हूँ ...
नेल्सन

आप सुनिश्चित करें कि आप meld.exe का उपयोग कर रहे हैं, न कि वह मेल फ़ाइल जो बिन फ़ोल्डर में है (मुझे लगता है)। मुझे याद है कि एक समस्या है जहाँ मैंने केवल मेल्ड फ़ाइल का उपयोग किया है और यह एप्लिकेशन को लॉन्च करता है इससे पहले कि आपके पास अस्थायी फ़ोल्डर में फ़ाइलों को डालने का मौका है।
schuess

मैंने आपके समाधान का उपयोग किया, लेकिन निर्देशिका meldमें फ़ाइल का उपयोग करके bin(मैंने वास्तव में फ़ाइल का नाम बदला है meld.py) और यह समस्या के बिना काम किया।
जराट

7

खिड़कियाँ:

आप इन दोनों आदेशों का उपयोग कर सकते हैं ( जैसा कि अरुगिन कहते हैं ) - 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 difftoolWindows और Meld के लिए Git Bash में कॉल करने से आपका डिफ़ॉल्ट difftool व्यूअर के रूप में खुल जाएगा।


लिनक्स:

UPDATE 20 Sept. 2019:
- मैं लिनक्स संस्करण को यहां भी अपने संदर्भ के लिए एक ही स्थान पर रख सकता हूं यदि कुछ और नहीं:

लिनक्स के लिए यह बहुत आसान है:

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

फिर .gitconfig फ़ाइल के नीचे जोड़ें:

[diff]
    tool = meld

बस! git difftoolअब लिनक्स उबंटू पर काम करता है!

सम्बंधित:

  1. यहाँ से डाउनलोड और इनस्टॉल करें: https://meldmerge.org/
  2. मैं कमिट के लिए अपनी पसंद के संपादक का उपयोग कैसे करूँ?
  3. https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles

4

मुझे इस पृष्ठ पर मेल्ड इंस्टॉलर पर एक बग रिपोर्ट में एक समाधान मिला:

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

जहाँ तक मैं समझता हूँ, समस्या यह है कि meld.exe प्रोग्राम (जो कि अजगर इंटरप्रेटर के माध्यम से मेल खाता है) अनावश्यक रूप से meld.exe के लिए कमांड की वर्किंग डायरेक्टरी को सेट करता है। यह कमांड लाइन तर्क के रूप में पारित होने पर गलत तरीके से व्याख्या करने के लिए सापेक्ष पथ का कारण बनता है।

समाधान प्रदान की गई meld। पृष्ठ के नीचे स्क्रिप्ट को सबसे पहले डाउनलोड करें, क्योंकि वहां कुछ संस्करण पोस्ट किए गए हैं।


3
समस्या ट्रैकर को मेरे पास समस्या को स्वचालित रूप से असाइन करने के लिए सेट नहीं किया गया था, इसलिए मुझे याद आया कि टिप्पणियां थीं। गोगलर्स के लिए जो इसे बाद में पाते हैं; मामला सुलझ गया है।
कीगन

4

मुझे भी इसी तरह के मुद्दे का सामना करना पड़ा। उपयोग की जाने वाली प्रणाली विंडोज 10 है और निम्नलिखित परिवर्तन मेरे लिए काम करते हैं। यह पथ मुद्दे की तरह लगता है

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

3

किसी कारण से, विंडोज 10 में पैठ पर्यावरण चर स्थापना के दौरान ठीक से सेट नहीं किया जा सकता है, इसलिए एक अजीब अपवाद यह कहते हुए उठाया जाता है कि यह कुछ नहीं मिल पा रहा है। सभी जो "C: \ Program Files (x86) / के तहत हैं। / मेल्ड / बिन "निर्देशिका।

मेरे लिए एक समाधान था, git bash में निष्पादित:

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

या विंडोज़ 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और मेलड खोलते हैं। एक बचत के बाद, आपको जीआईटी में प्रतिबद्ध होना होगा और संघर्षों का समाधान करना होगा।

किसी कारण के लिए, यह केवल Meld 3.18.x के साथ काम करता है, Meld 3.20.x मुझे एक त्रुटि देता है।


0

उपरोक्त सभी की कोशिश करने के बाद, व्यवस्थापक के रूप में काम करने के लिए मेल्ड को चलाने के लिए सेट करना।

  1. Meld.exe पर राइट-क्लिक करें
  2. गुण > संगतता पर जाएं और Run this program as an administratorचेकबॉक्स चुनें

मुझे मिली त्रुटियों जैसे संदर्भित अस्थायी फ़ाइलें c:\windows\temp\meld-*, जो बनाई नहीं जा रही थीं। मेल्ड की अनुमतियों को ऊपर उठाने से लगता है कि चाल अब दोनों के साथ काम करती है git difftoolऔर मैन्युअल रूप से मेलड के भीतर चल रही है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.