Git MergeTool के लिए डिफ़ॉल्ट संपादक के रूप में Visual Studio कोड का उपयोग कैसे करें


121

आज मैं git mergetoolविंडोज कमांड प्रॉम्प्ट पर उपयोग करने की कोशिश कर रहा था और महसूस किया कि यह विम का उपयोग करने के लिए डिफ़ॉल्ट था , जो शांत है, लेकिन मुझे वीएस कोड चाहिए

Git के लिए मर्ज संघर्षों (या यहां तक ​​कि एक अलग उपकरण के रूप में) को संभालने के लिए मेरे GUI के रूप में विज़ुअल स्टूडियो कोड फ़ंक्शन कैसे हो सकता है ?

जवाबों:


240

विजुअल स्टूडियो कोड के रूप में 1.13 बेहतर विलय दृश्य स्टूडियो कोड के मूल में एकीकृत किया गया था।

उन्हें एक साथ तार करने का तरीका अपने को संशोधित करना है .gitconfigऔर आपके पास दो विकल्प हैं

  1. : कमांड लाइन प्रविष्टियों के साथ ऐसा करने के लिए, इनमें से प्रत्येक में प्रवेश (: की जगह नोट "के साथ 'के रूप में इज़्तोक Delfin और e4rache द्वारा स्पष्ट किया विंडोज Git बैश, MacOS और लिनक्स पर)

    1. git config --global merge.tool vscode
    2. git config --global mergetool.vscode.cmd "code --wait $MERGED"
    3. git config --global diff.tool vscode
    4. git config --global difftool.vscode.cmd "code --wait --diff $LOCAL $REMOTE"
  2. .gitconfig विजुअल स्टूडियो कोड के साथ कुछ लाइन चिपकाकर ऐसा करने के लिए ।

    • git config --global core.editor "code --wait"कमांड लाइन से चलाएं ।
    • यहां से आप कमांड डाल सकते हैं git config --global -e। आप नीचे दिए गए "अतिरिक्त ब्लॉक" में कोड में पेस्ट करना चाहेंगे।

      [user]
          name = EricDJohnson
          email = cool-email@neat.org
      [gui]
          recentrepo = E:/src/gitlab/App-Custom/Some-App
      # Comment: You just added this via 'git config --global core.editor "code --wait"'
      [core]
          editor = code --wait
      # Comment: Start of "Extra Block"
      # Comment: This is to unlock Visual Studio Code as your Git diff and Git merge tool
      [merge]
          tool = vscode
      [mergetool "vscode"]
          cmd = code --wait $MERGED
      [diff]
          tool = vscode
      [difftool "vscode"]
          cmd = code --wait --diff $LOCAL $REMOTE
      # Comment: End of "Extra Block"
      

अब एक संघर्ष रन git mergetoolऔर टाडा के साथ अपने गिट निर्देशिका के भीतर , आप विजुअल स्टूडियो कोड मर्ज संघर्ष को संभालने में आपकी मदद कर रहे हैं! ( विजुअल स्टूडियो कोड बंद करने से पहले अपनी फ़ाइल को सहेजना सुनिश्चित करें ।)

आने वाले को स्वीकार करें किसी को बदलें?

codeकमांड लाइन से लॉन्च करने पर आगे पढ़ने के लिए , इस दस्तावेज़ में देखें

अधिक जानकारी के git mergetoolलिए इस दस्तावेज को देखें


3
<<<< हेड के ऊपर एक पंक्ति है, जो सम्मिलित हो जाती है जो विकल्पों को सूचीबद्ध करती है: "वर्तमान परिवर्तन स्वीकार करें। आने वाले परिवर्तन स्वीकार करें। दोनों परिवर्तन। तुलना परिवर्तन" और मुझे विश्वास है कि यह फ़ाइल में पता लगाए गए परिवर्तनों के प्रत्येक अनुभाग पर इसे सम्मिलित करता है। । लेकिन एक सेक्शन के भीतर अगर आप कस्टम को इसमें से कुछ और थोड़ा-थोड़ा हाथ से मर्ज करना चाहते हैं, तो मेरा मानना ​​है कि आप अपने लोकल में वह बदलाव कर देंगे और फिर "एक्सेप्ट करंट चेंज" विकल्प के साथ जाएंगे। तो काम का प्रवाह इस तरह का होता है कि आप एक कदम आगे बढ़ाने के लिए पीछे हट जाते हैं। अगर दूसरे इसे अलग तरीके से हल करते हैं तो कृपया हमें शिक्षित करने के लिए यहां पोस्ट करें
एरिक डी। जॉनसन

3
मुझे त्रुटि मिलती है unknown tool: vscode... मुझे कमांड लाइन से VsCode को कॉल करने के लिए बहुत यकीन हैcodevscode
Kolob Canyon

19
इसके अलावा, यह मेरे लिए काम नहीं कर रहा है। यह बस VsCode को खोलता है और कोई फाइल कभी ऊपर नहीं लाया जाता है
Kolob Canyon

1
मैं जो करना चाहूंगा वह है "giff difftool mybranch master" और सभी फ़ाइलों के परिवर्तन के साथ VS कोड खुला। अभी, यह केवल एक ही खुलता है और आपके इसे बंद करने की प्रतीक्षा करता है।
Pluc

1
ओह हाँ, मुझे पता है कि, लेकिन इसमें वह लचीलापन नहीं है जिसकी मुझे तलाश है जैसे दो कमिट या दो शाखाओं के बीच एक अंतर पाने की। और अगर ऐसा होता है, तो बनाम कोड में गिट नेविगेट करना मेरे विचार में काफी भयानक है। मैं सिर्फ उनके अंतर को पसंद करता हूं और UI को मर्ज करता हूं। मैं जा रहा था और git difftool -dएक निर्देशिका के लिए अलग देखा । मैं देखता हूँ कि कल कैसे काम करता है।
प्‍लस

23

मुझे दोहरे उद्धरणों को सरल उद्धरणों से बदलना था:

  git config --global difftool.vscode.cmd 'code --wait --diff $LOCAL $REMOTE'

ठीक से काम करने के लिए (दोहरे उद्धरण चिह्नों के साथ, $ LOCAL और $ REMOTE को उनके मूल्यों से बदल दिया जाता है)।

यह आवश्यक है अगर आप विंडोज कमांड प्रॉम्प्ट के बजाय विंडोज के लिए गिट बैश का उपयोग कर रहे हैं ।


1
मेरे लिए नहीं। मैंने बस कमांड प्रॉम्प्ट का उपयोग करके विंडोज पर ऐसा किया था। शायद आप कुछ अलग प्रयोग कर रहे हैं? यदि हां, तो मैं सुझाव देता हूं कि आप जिस पर्यावरण का उपयोग कर रहे हैं, उसी पर्यावरण के साथ अन्य लोग यह जानेंगे कि उन्हें यह परिवर्तन करने की आवश्यकता होगी।
टोड्सेंगेल

1
@ e4rache और @ Iztok-Delfin जो आपने यहां सूचीबद्ध किया है वह सहायक सामग्री है लेकिन आपने गलती से इसका उत्तर दे दिया है, जब यह वास्तव में एक टिप्पणी है। मुझे यकीन है कि आप मुसीबत में पड़ गए थे क्योंकि आपके पास एसओ पर 50 बिंदु नहीं थे ताकि आप टिप्पणी कर सकें, जो कि एक साइट वर्क फ्लो समस्या है, जिस पर ध्यान दिया जाना चाहिए। वैसे भी, योगदान देने के लिए धन्यवाद, और मैंने ऊपर दिए गए अपने उत्तर में आपकी टिप जोड़ी। बाद में आने वालों की मदद करने के लिए धन्यवाद और :^)
Eric D. Johnson

@ एरिक-डी-जॉन्सन मैं पूरी तरह से एक उत्तर के बजाय एक टिप्पणी करने के लिए था। (क्षमा करें, मैं इस साइट पर नया हूं) और btw मैं लिनक्स पर बैश का उपयोग कर रहा था। क्या इस उत्तर को टिप्पणी में बदलने का कोई तरीका है?
e4rache

@ e4rache मुझे यह टिप्पणी करने का कोई तरीका नहीं पता है, लेकिन शायद एक मॉडरेटर इसे देखेगा और हमें कुछ सुझाव देगा (संकेत, संकेत)। यदि आपके पास 50 अंक हैं, तो आप स्वीकृत उत्तर पर एक टिप्पणी कर सकते हैं, और इस एक को हटा सकते हैं, इसलिए एक बार जब आप अंकों के साथ एसओ रॉक-स्टार बन जाते हैं तो आप यहां वापस आ सकते हैं और जो भी हाउसकीपिंग आपको खुश करता है और वापस लाता है यह सब कैसे शुरू हुआ की अच्छी यादें।
एरिक डी। जॉनसन

1
@mohamedghonemi अच्छी प्रतिक्रिया मैंने macOS और Linux के लिए शीर्ष पर स्पष्टीकरण को अब अपडेट किया ताकि याद रखें कि एकल उद्धरणों का उपयोग करें '
एरिक डी। जॉनसन

2

यदि कोई इसे विज़ुअल स्टूडियो में हल करना चाहता है, तो एक अन्य विकल्प विजुअल स्टूडियो के माध्यम से कर रहा है: टीम एक्सप्लोरर -> होम आइकन पर क्लिक करें => सेटिंग्स बटन => विस्तार अनुभाग पर जाएं>> ग्लोबल सेटिंग्स पर क्लिक करें

यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें


विजुअल स्टूडियो विजुअल स्टूडियो कोड के बराबर नहीं है। इस तरह से की जाने वाली सेटिंग्स काफी अलग हैं। अंतर के लिए stackoverflow.com/a/33798601 देखें
jwd630

1
@ jwd630 मुझे पता है कि VS कोड VS से अलग है। वीएस में मेरा यह मुद्दा था, लेकिन मैं इसके लिए कोई समाधान नहीं ढूंढ सका था, हालांकि यह बेहतर होगा कि अगर कोई इस समस्या का सामना कर रहा है तो इसे पोस्ट करना बेहतर होगा। डाउन-वोट की जरूरत नहीं।
डैनियल बी

2

उत्कृष्ट मौजूदा उत्तर के शीर्ष पर , आपको -nकमांड लाइन में जोड़कर एक नई विंडो में वीएस कोड खोलना चाहिए ।

तो आपका git config --global --editलुक कुछ ऐसा है।

[merge]
        tool = vscode
[mergetool "vscode"]
        cmd = code -n --wait $MERGED
[diff]
        tool = vscode
[difftool "vscode"]
        cmd = code -n --wait --diff $LOCAL $REMOTE                                                    

1

मैनुअल का उपयोग करके आप एक दिलचस्प तर्क पा सकते हैं:

git difftool --help 
-x <command>, --extcmd=<command>
       Specify a custom command for viewing diffs.  git-difftool ignores the configured defaults and runs $command $LOCAL $REMOTE when this option is specified.
       Additionally, $BASE is set in the environment.

इस जानकारी के साथ आप आसानी से बिना git कॉन्फ़िगरेशन को स्पर्श किए निम्नलिखित कमांड का उपयोग कर सकते हैं:

git difftool -x "code --wait --diff" 

इसी तरह का सवाल यहाँ

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