इंटरएक्टिवली (नेत्रहीन) कैसे SourceTree / git में संघर्षों को हल करते हैं


119

मैं अपने git प्रोजेक्ट के लिए (Windows) SourceTree का उपयोग कर रहा हूं। मैं इसे कमांड प्रॉम्प्ट या लिनक्स टर्मिनल में कर सकता हूं।

लेकिन, मैं सोच रहा हूं कि क्या पारस्परिक रूप से और नेत्रहीन संघर्षों का एक अच्छा तरीका है। उदाहरण के लिए, यदि पुल टकराव का पता लगाता है, तो GUI- आधारित संघर्ष टूल (जैसे, P4Merge) को पॉप अप करता है। क्या यह संभव है?

मैं हमेशा मैनुअल संघर्ष का समाधान कर रहा हूं, जो सिर्फ दर्दनाक है।

उदाहरण के लिए, यह एक pullसंदेश है, SourceTree से।

git -c diff.mnemonicprefix=false -c core.quotepath=false pull --no-commit origin master
From W:\repo\
 * branch            master     -> FETCH_HEAD   

Updating 33c07bf..41e0249

error: Your local changes to the following files would be overwritten by merge:
    foo.cpp
    goo.cpp
    goo.hpp
Please, commit your changes or stash them before you can merge.
Aborting    

Completed with errors, see above.

जवाबों:


135

SourceTree से Tools-> Options पर क्लिक करें। फिर "सामान्य" टैब पर, अपने गिट डिस्क फ़ाइलों को संशोधित करने के लिए SourceTree को अनुमति देने के लिए बॉक्स की जांच करना सुनिश्चित करें।

फिर "डिफ" टैब पर स्विच करें। निचले आधे भाग पर, उस बाहरी प्रोग्राम का चयन करने के लिए ड्रॉप डाउन का उपयोग करें जिसे आप डिफरेंस और मर्ज करने के लिए उपयोग करना चाहते हैं। मैंने केडीडी 3 स्थापित किया है और इसे काफी पसंद किया है। जब आप पूरा कर लें, तो ठीक पर क्लिक करें।

अब जब कोई मर्ज होता है, तो आप कार्रवाई के तहत जा सकते हैं-> विरोधों को हल करें-> बाहरी मर्ज उपकरण लॉन्च करें।


4
मैंने यह कोशिश की, लेकिन अंत में, मुझे लॉन्च किए जाने की तुलना में परे नहीं देखा गया। मैं देख रहा हूँ कि फ़ाइलें जनरेट की जा रही हैं, लेकिन यह बात है। मैं संघर्ष को हल नहीं कर सकता। इसे मानक / डिफ़ॉल्ट तुलना में बदलने से कोई मदद नहीं मिलती है।
इचिबन

1
@echiban आपके पास शायद बियॉन्ड तुलना के लिए मानक लाइसेंस है जो 3 तरह के विलय को स्वीकार नहीं करता है। आपको इसे
गइट मेरिजेट

6
"लॉन्च एक्सटर्नल मर्ज टूल" को कॉन्फ़िगर करने के लिए सभी चरणों का पालन करने के बाद भी मेरे लिए मंद है, इसे सक्रिय करने का कोई तरीका नहीं है
pal4life

2
इसके अलावा, मैं मर्ज संघर्ष फ़ाइल का चयन नहीं कर रहा था, एक बार जब मैंने किया कि यह ठीक हो गया
pal4life

2
मुझे अन-ग्रील्ड होने से पहले कमिट सूची में "अनकमाइटेड चेंजेज" आइटम पर क्लिक करना था।
मीका झोल्टू

11

मैं TortoiseMerge / Diff के साथ SourceTree का उपयोग कर रहा हूं, जो कि बहुत आसान है और निश्चित रूप से भिन्न / मर्ज टूल है।

यदि आप इसका उपयोग करना चाहते हैं, तो:

  1. TortoiseMerge / Diff (काफी पुराना, का स्टैंडअलोन संस्करण प्राप्त करें क्योंकि यह TortosieSVN के संस्करण 1.6.7 के बाद से स्टैंडअलोन जहाज नहीं करता है, जो जुलाई 2011 से है)। लिंक और विवरणइस उत्तर में

  2. अनज़िप TortoiseIDiff.exeऔरTortoiseMerge.exe किसी भी फ़ोल्डर में ( c:\Program Files (x86)\Atlassian\SourceTree\extras\मेरे मामले में)।

  3. SourceTree में खुला Tools > Options > Diff > External Diff / MergeTortoiseMergeदोनों ड्रॉपडाउन सूचियों में चयन करें ।

  4. हिट OKऔर अपने स्थान के लिए SourceTree बिंदुTortoiseIDiff.exe और TortoiseMerge.exe

उसके बाद, आप Resolve Conflicts > Launch External Merge Toolअपने स्थानीय भंडार में प्रत्येक विवादित फ़ाइल पर संदर्भ मेनू से चयन कर सकते हैं । यह TortoiseMerge को खोलेगा, जहां आप आसानी से सभी संघर्षों से निपट सकते हैं। एक बार समाप्त होने के बाद, बस TortoiseMerge को बंद करें (आपको परिवर्तनों को सहेजने की आवश्यकता नहीं है, यह संभवतः स्वचालित रूप से किया जाएगा) और कुछ सेकंड के बाद SourceTree को उस इनायत को संभालना चाहिए।

एकमात्र समस्या यह है कि यह स्वचालित रूप से बैकअप प्रतिलिपि बनाता है, भले ही उचित विकल्प अनियंत्रित हो


4

जब हल विरोध-> सामग्री मेनू अक्षम हैं, तो एक लंबित फ़ाइलों की सूची में हो सकता है। हमें ड्रॉप डाउन (टॉप) से कॉन्फ्लिक्टेड फाइल विकल्प का चयन करना होगा

आशा करता हूँ की ये काम करेगा

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