2015-10-23 4 views
122

हाल ही में मैं गिटएक्स्टेंशन 2.46 का उपयोग कर रहा था, लेकिन गिट संस्करण जो इसका है 1.9.4.msysgit.2 है। केवल गिट कमांड का उपयोग करने के लिए तैयार, मैंने GitExtension को अनइंस्टॉल किया और Git और KDiff3 के नवीनतम संस्करण को स्थापित किया।गिट: KDiff3 को मर्ज टूल और डिफ टूल के रूप में कॉन्फ़िगर कैसे करें

जब मैं किसी मर्ज बनाने के लिए और संघर्ष है, मैं निम्नलिखित कमांड चलाएँ:

मर्ज उपकरण kdiff3 'kdiff3' के रूप में उपलब्ध नहीं है:

$ git mergetool 

तब मैं संदेश प्राप्त होता है।

मुझे लगता है कि यह KDiff3 पथ से होना चाहिए।

पर्यावरण

  • ओएस: विंडोज 10
  • Git 2.6.1.windows.1
  • KDiff3 0.9.98 (64 बिट)

सवाल:

  • क्या मैं आदेश $ git mergetool संस्करणों स्थानीय साथ KDiff3 जीयूआई को खोलने के लिए के लिए .gitconfig फ़ाइल में कॉन्फ़िगर करने के लिए क्या है, REMOTE, आधार और विलय विरोध हुआ फ़ाइल के?

  • इसका उपयोग करने के लिए इसे कॉन्फ़िगर कैसे करें diff-tool?

उत्तर

225

ये साइटें बहुत उपयोगी थीं, लगभग mergetool और difftool। मैंने वैश्विक विन्यास का उपयोग किया, लेकिन समस्याओं के बिना भंडार द्वारा इसका उपयोग किया जा सकता है।तुम बस निम्नलिखित आदेश पर अमल करने की जरूरत है:

git config --global --add merge.tool kdiff3 
git config --global --add mergetool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe" 
git config --global --add mergetool.kdiff3.trustExitCode false 

git config --global --add diff.guitool kdiff3 
git config --global --add difftool.kdiff3.path "C:/Program Files/KDiff3/kdiff3.exe" 
git config --global --add difftool.kdiff3.trustExitCode false 

trustExitCode विकल्प के उपयोग के लिए आप क्या जब diff उपकरण रिटर्न क्या करना चाहते हैं पर निर्भर करता है। documentation से:

Git-difftool प्रत्येक फ़ाइल पर व्यक्तिगत रूप से एक diff उपकरण invokes। Diff उपकरण द्वारा रिपोर्ट की गई त्रुटियों को डिफ़ॉल्ट रूप से अनदेखा किया जाता है। - ट्रस्ट-एग्जिट-कोडगिट-difftool निकालने के लिए उपयोग करें जब एक आवंटित diff उपकरण गैर-शून्य निकास कोड देता है।

+4

फिर भी, मैं git-difftool क्यों बाहर निकलना नहीं चाहता अगर kdiff3 विफल हो जाए? 'Git config --global --add: –

+3

मुझे विजुअल स्टूडियो 2015 तक मान्यता प्राप्त diff उपकरण के लिए के लिए, मैं इस लाइन ' Git config --global --add diff.guitool kdiff3' यह करने के लिए बदलना पड़ा diff.tool kdiff3' –

+1

@ डेविड टोर्रेस शायद क्योंकि बुरी तरह से व्यवहार किए गए विंडोज टूल्स (जो सफलता पर गैर-शून्य कोड से बाहर निकलते हैं) इसे हर किसी के लिए बर्बाद कर देते हैं। –

7

ठीक है, समस्या यह है कि गिट% PATH% में kdiff3 नहीं ढूंढ सकता है।

एक विशिष्ट यूनिक्स स्थापना में सभी निष्पादन योग्य कई सुप्रसिद्ध स्थानों (/bin/, /usr/bin/, /usr/local/bin/ आदि) में रहते हैं और एक बस टाइपिंग यह नाम है एक खोल प्रोसेसर (जैसे cmd.exe :)) में से एक कार्यक्रम को लागू कर सकते हैं।

एमएस विंडोज प्रोग्राम में आमतौर पर समर्पित पथों में स्थापित होते हैं ताकि आप को cmd सत्र में बस टाइप न करें और kdiff3 चालू हो जाएं।

कठिन समाधान: आपको kdiff3.exe पर पूरा पथ निर्दिष्ट करके kdiff3 कहां मिलना चाहिए। दुर्भाग्यवश, गिट को इसकी कॉन्फ़िगरेशन में पथ विनिर्देश में रिक्त स्थान पसंद नहीं हैं, इसलिए आखिरी बार मुझे इसकी आवश्यकता थी, मैं उन प्राचीन "सी: \ प्रोग्रा ~ 1 ... \ kdiff3.exe" के साथ समाप्त हुआ जैसे कि यह नब्बे के दशक के उत्तरार्ध में था :)

सरल समाधान: अपनी कंप्यूटर सेटिंग्स संपादित करें और% PATH% में kdiff3.exe के साथ निर्देशिका शामिल करें। फिर परीक्षण करें कि क्या आप इसे cmd.exe से इसके नाम से बुला सकते हैं और फिर गिट चला सकते हैं।

31

बस the @Joseph's answer विस्तार करने के लिए:

इन आदेशों अपने वैश्विक .gitconfig फ़ाइल लागू करने के बाद निम्नलिखित लाइनों (प्रक्रिया तुम सिर्फ फ़ाइल में उन्हें कॉपी कर सकते हैं तेजी लाने के लिए) होगा:

[merge] 
    tool = kdiff3 
[mergetool "kdiff3"] 
    path = C:/Program Files/KDiff3/kdiff3.exe 
    trustExitCode = false 
[diff] 
    guitool = kdiff3 
[difftool "kdiff3"] 
    path = C:/Program Files/KDiff3/kdiff3.exe 
    trustExitCode = false 
+0

आप सुझाव देते हैं कि निकास कोड पर भरोसा न करें? – Alex78191

+0

@ Alex78191, मेरा जवाब यूसुफ के उत्तर को दर्शाता है और वहां आप इस सेटिंग के बारे में अधिक जानकारी प्राप्त कर सकते हैं। –

+1

मुझे यह अधिकार प्राप्त करने में काफी समय लगा। 2 चीजें मुझे भटक गईं: (1) '.gitconfig' फ़ाइल जिसे मैं संपादित कर रहा था _not_ का उपयोग किया जा रहा था। लोड किए जा रहे एक को पहचानने के लिए https://stackoverflow.com/questions/2114111/where-does-git-config-global-get-written-to देखें। (2) gitconfig, tL में 'cmd = 'और' path = 'से मेल न करें और मिलान करें; डीआर: cmd हटाएं और पथ –

संबंधित मुद्दे