संपादित 3 महीने पहले द्वारा ExtremeHow संपादकीय टीम
गिटविलय संघर्षविंडोमैकलिनक्ससहयोगशाखाएंसमस्या निवारणस्रोत नियंत्रणकोड प्रबंधनउत्पादकता
अनुवाद अपडेट किया गया 3 महीने पहले
Git के साथ काम करते समय, शाखाओं का मर्ज करना सहयोग का एक अनिवार्य हिस्सा है। डेवलपर्स विभिन्न विशेषताओं या सुधारों पर काम करने के लिए अलग-अलग शाखाएँ बना सकते हैं, और जब उनका काम पूरा हो जाता है, तो इन शाखाओं को मुख्य शाखा में या एक-दूसरे के साथ मर्ज करने की आवश्यकता होती है। हालाँकि, यह कभी-कभी मर्ज कॉन्फ्लिक्ट्स की ओर ले जा सकता है। आइए जानें कि मर्ज कॉन्फ्लिक्ट्स क्या हैं और उन्हें प्रभावी ढंग से कैसे हल किया जाए।
Git में मर्ज कॉन्फ्लिक्ट तब होते हैं जब एक शाखा से किए गए परिवर्तन दूसरी शाखा के परिवर्तनों से टकराते हैं। यह आमतौर पर तब होता है जब दो डेवलपर्स एक ही फ़ाइल में एक ही लाइन को संशोधित करते हैं या जब एक डेवलपर एक फ़ाइल को हटाता है जबकि दूसरा डेवलपर इसे संपादित करता है।
विवाद विभिन्न स्तरों पर हो सकते हैं - जिसमें लाइन स्तर, फ़ाइल स्तर, या यहां तक कि पूरा डायरेक्टरी संरचना शामिल है - लेकिन ज्यादातर परिदृश्यों में, विवाद लाइन-स्तरीय मुद्दे होते हैं जिन्हें हल करने के लिए डेवलपर के हस्तक्षेप की आवश्यकता होती है।
मर्जिंग दो शाखाओं से परिवर्तनों को मिलाने की प्रक्रिया है। जब आप एक मर्ज ऑपरेशन शुरू करते हैं, तो Git एक शाखा से वर्तमान शाखा में स्वत: रूप से परिवर्तन लागू करने का प्रयास करता है। यदि Git को परस्पर विरोधी परिवर्तन मिलते हैं, तो यह मर्ज कॉन्फ्लिक्ट घोषित करता है और विसंगतियों को हल करने के लिए उपयोगकर्ता के हस्तक्षेप को प्राप्त करने से पहले मर्ज प्रक्रिया को रोकता है।
जब मर्ज कॉन्फ्लिक्ट होता है, तो Git आपको संघर्षों का पता लगाने के लिए प्रासंगिक जानकारी प्रदान करेगा। यह उन फ़ाइलों को इंगित करने वाले त्रुटि संदेश लौटाता है जो संघर्ष में शामिल हैं। आप उन फ़ाइलों की सूची देखने के लिए git status
कमांड का उपयोग कर सकते हैं जिनमें संघर्ष हैं।
एक बार जब आप विवादित फ़ाइलों का पता लगा लेते हैं, तो उन्हें अपने पसंदीदा टेक्स्ट एडिटर का उपयोग करके खोलें। इन फ़ाइलों के अंदर, आपको संघर्षों वाले कोड के हिस्सों को इंगित करने के लिए Git द्वारा उपयोग किए गए संघर्ष मार्कर दिखाई देंगे। वे कुछ इस तरह दिखेंगे:
<<<<<<< HEAD आपकी वर्तमान शाखा में आपके परिवर्तन ======= उस शाखा से परिवर्तन जिसे आप मर्ज कर रहे थे >>>>>>> शाखा-नाम
यहां, <<<<<<< HEAD
और =======
के बीच का कोड आपकी वर्तमान शाखा के परिवर्तनों को दिखाता है, जबकि =======
और >>>>>>> शाखा-नाम
के बीच का कोड उस शाखा के परिवर्तनों को प्रदर्शित करता है जिसे आप मर्ज करने का प्रयास कर रहे हैं।
विवादों को हल करने में दो संस्करणों से किस प्रकार के परिवर्तनों को रखना है, यह तय करना शामिल है। आपके पास कई विकल्प हैं:
एक बार जब आपने किसी विशेष फ़ाइल में विवादों को हल कर लिया, तो Git के संघर्ष मार्कर को हटा दें।
विवादों को हल करने और संघर्ष मार्करों को साफ़ करने के बाद, git add <file>
कमांड का उपयोग करके फ़ाइल को हल के रूप में चिह्नित करें। यह Git को बताता है कि आपने मैन्युअल रूप से विवाद हल कर लिए हैं और आगे बढ़ने के लिए तैयार हैं।
एक बार जब सभी विवाद हल हो जाते हैं और इस प्रकार चिह्नित कर दिए जाते हैं, तो आप परिवर्तनों को कमिट करके विलय प्रक्रिया को पूरा कर सकते हैं। निम्नलिखित कमांड चलाएँ:
git commit
यह कमांड एक टेक्स्ट एडिटर खोलेगा जिससे कि आप एक कमिट का संदेश जोड़ सकें। डिफॉल्ट रूप से, Git एक संदेश प्रदान करता है जो मर्ज कमिट को इंगित करता है।
जबकि कमांड-लाइन टूल शक्तिशाली हैं, आप संघर्षों को हल करने के लिए एक ग्राफिकल टूल को पसंद कर सकते हैं। विभिन्न Git क्लाइंट जैसे SourceTree, GitKraken, या इंटरग्रेटेड डेवलपमेंट एनवायरनमेंट (IDEs) जैसे Visual Studio Code एकीकृत संघर्षों की पहचान करने में सहायता कर सकते हैं।
उदाहरण के लिए, Visual Studio Code में Git संघर्ष समाधान बनता है। जब आप एक फ़ाइल खोलते हैं जिसमें एक संघर्ष होता है, तो यह सीधे संपादक इंटरफ़ेस में वर्तमान परिवर्तन या एक इनकमिंग परिवर्तन के बीच चयन करने के विकल्प प्रदर्शित करेगा।
हालाँकि कभी-कभी विवाद अटालनीय होते हैं, लेकिन कुछ अभ्यासों को अपनाकर उनकी आवृत्ति को काफी हद तक घटाया जा सकता है:
git rebase
का उपयोग करके मुख्य शाखा से परिवर्तन शामिल करें।रीबेस एक प्रक्रिया है जो आपको कंमिट्स के अनुक्रम को अलग आधार कंमिट में स्थानांतरित करने या जोड़ने की अनुमति देती है। यह आपको टारगेट ब्रांच के नवीनतम परिवर्तनों पर अपने परिवर्तनों को लागू करने की अनुमति देकर जल्दी से संघर्षों को हल करने में सहायता कर सकता है। यह आपके कंमिट इतिहास को रैखिक बना देता है, संभावित मर्ज संघर्षों को कम करता है।
हालाँकि, एक सहयोगात्मक वातावरण में सावधानीपूर्वक रीबेस का उपयोग करें, क्योंकि यह कंमिट इतिहास को फिर से लिखता है, जो समस्याएँ पैदा कर सकता है यदि सभी टीम सदस्य जागरूक नहीं हैं।
Git में मर्ज कॉन्फ्लिक्ट वास्तव में सहयोगात्मक विकास का एक सामान्य हिस्सा हैं। हालाँकि वे चुनौतीपूर्ण हो सकते हैं, उन्हें पहचानने और हल करने के तरीके को समझना सुचारू कार्यप्रवाह बनाए रखने की कुंजी है। सावधानीपूर्वक ध्यान, प्रभावी संचार, और परिवर्तनों के नियमित एकीकरण के साथ, आप उनकी घटना और प्रभाव को कम कर सकते हैं। उल्लिखित प्रथाओं का पालन करने — कमांड-लाइन और ग्राफिकल टूल्स दोनों का उपयोग — यह सुनिश्चित करेगा कि आप मर्ज कॉन्फ्लिक्ट्स को एक कुशल, विश्वसनीय तरीके से संभालें।
यदि आपको लेख की सामग्री में कुछ गलत लगता है, आप कर सकते हैं