Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> प्रोग्रामिंग

Git मर्ज कॉन्फ्लिक्ट्स को कैसे हल करें

मर्ज कॉन्फ्लिक्ट क्या है?

मर्ज कॉन्फ्लिक्ट वह स्थिति है जहां Git आपकी मदद के बिना दो ब्रांच को मर्ज नहीं कर सकता।

मर्ज Git जैसे वर्जन कंट्रोल सिस्टम की एक कॉर्नरस्टोन विशेषता है। वे डेवलपर्स को एक रिपॉजिटरी में डेवलपमेंट की कई अलग लाइनें बनाए रखने की अनुमति देते हैं। इसका मतलब है कि एक डेवलपर मेन प्रोजेक्ट की कॉपी को बदले बिना एक ब्रांच पर बग्स फिक्स करने पर काम कर सकता है।

मर्ज कॉन्फ्लिक्ट दो परिदृश्यों में उत्पन्न होते हैं:

  • दो ब्रांच ने कोड की एक ही लाइन को बदल दिया है।
  • एक ब्रांच ने एक फ़ाइल को हटा दिया है जिसे दूसरे ब्रांच पर बदल दिया गया है।

जब एक मर्ज कॉन्फ्लिक्ट उत्पन्न होता है, तो Git में एक त्रुटि प्रस्तुत की जाएगी। यह आपको बताता है कि Git ब्रांच को सफलतापूर्वक मर्ज करने में असमर्थ था।

हटाई गई फ़ाइल कॉन्फ्लिक्ट को कैसे हल करें

Git ब्रांच एक-दूसरे से स्वतंत्र हैं। इसका मतलब है कि एक डेवलपर एक ब्रांच पर फ़ाइल को हटा सकता है बिना उस परिवर्तन के दूसरी ब्रांच को प्रभावित किए।

मर्ज कॉन्फ्लिक्ट तब हो सकते हैं जब एक ब्रांच पर फ़ाइल में परिवर्तन किया जाता है, और उस फ़ाइल को दूसरी ब्रांच पर हटा दिया जाता है। ऐसा इसलिए है क्योंकि Git नहीं जानता कि फ़ाइल को हटाना है या बदलना है।

मान लीजिए हमारे पास दो ब्रांच हैं: dev और master। dev ब्रांच पर, हमने README.md फ़ाइल को हटा दिया है। master ब्रांच पर, हमने नया टेक्स्ट जोड़ा है।

हम git merge कमांड का उपयोग करके इन ब्रांच को मर्ज कर सकते हैं:

git merge dev

यह हमारी वर्तमान ब्रांच पर "dev" ब्रांच को मर्ज करेगा, जो master है। हमारे कोड ने एक मर्ज कॉन्फ्लिक्ट लौटाया है:

Auto-merging README.md CONFLICT (content): Merge conflict in README.md Automatic merge failed; fix conflicts and then commit the result.

इस कॉन्फ्लिक्ट को हल करने के लिए, हमें एक निर्णय लेने की आवश्यकता है: क्या हम फ़ाइल को रखना चाहते हैं, या बदलना चाहते हैं? यदि आप फ़ाइल को रखना चाहते हैं, तो git add कमांड का उपयोग करें और इसे रिपॉजिटरी में वापस जोड़ें:

git add README.md

अन्यथा, इसे अपने रिपॉजिटरी से हटाने के लिए git rm कमांड का उपयोग करें:

git rm README.md

rm कमांड फ़ाइल को आपके स्थानीय रिपॉजिटरी से हटा देगा। rm कमांड का उपयोग करने से पहले, यह सुनिश्चित करने के लिए दोबारा जांच लें कि आप फ़ाइल को हटाना चाहते हैं।

एक बार जब आप कॉन्फ्लिक्ट वाली फ़ाइलों के साथ क्या करना है, इसका चयन कर लेते हैं, तो आप अपने परिवर्तनों के साथ एक कमिट बना सकते हैं और ब्रांच को मर्ज कर सकते हैं:

git add README.md
git commit -m "feat: Add README.md to repository"
git merge dev

git add कमांड हमारे परिवर्तनों को स्टेज करता है। git commit कमांड एक नया कमिट बनाता है। git merge कमांड हमारी dev और master ब्रांच को मर्ज करता है। हमारी ब्रांच अब मर्ज हो सकती हैं क्योंकि हमने मर्ज कॉन्फ्लिक्ट को हल कर लिया है।

फ़ाइल परिवर्तन कॉन्फ्लिक्ट को कैसे हल करें

डेवलपर्स कभी-कभी दो अलग-अलग ब्रांच पर एक ही फ़ाइल में परिवर्तन करते हैं। जब दो ब्रांच को मर्ज किया जा रहा हो तो Git के लिए यह असंभव है कि कौन सा परिवर्तन रखना है।

इस मामले में, एक मर्ज कॉन्फ्लिक्ट उत्पन्न होगा। मान लीजिए हमारे पास दो ब्रांच के साथ एक रिपॉजिटरी है: master और dev। हमने दोनों ब्रांच पर README.md फ़ाइल में परिवर्तन किया है। इसने एक मर्ज कॉन्फ्लिक्ट पैदा किया है:

Auto-merging README.md CONFLICT (content): Merge conflict in README.md Automatic merge failed; fix conflicts and then commit the result.

पहला कदम मर्ज कॉन्फ्लिक्ट के मूल कारण की पहचान करना है। आप git status कमांड का उपयोग करके ऐसा कर सकते हैं:

On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: README.md

हम इस संदेश से देख सकते हैं कि फ़ाइल README.md दोनों ब्रांच पर संशोधित की गई थी। अब, हमें अपना मर्ज कॉन्फ्लिक्ट हल करना होगा। आइए टेक्स्ट एडिटर का उपयोग करके अपनी README.md फ़ाइल खोलें:

This is a README.md file. This is in a repository called merge-conflicts.
<<<<<<< HEAD
This file is on the main branch.
=======
This file is on the dev branch.
>>>>>>> dev

Git ने हमें बताने के लिए फ़ाइल को संपादित किया है कि एक मर्ज कॉन्फ्लिक्ट मौजूद है और कॉन्फ्लिक्ट मार्कर जोड़े हैं। Git मर्ज कॉन्फ्लिक्ट को व्यक्त करने के लिए कम-से, अधिक-से, और बराबर चिह्न वर्णों का उपयोग करता है।

कम-से संकेत (<) वर्तमान ब्रांच में किए गए परिवर्तनों का प्रतिनिधित्व करते हैं। अधिक-से संकेत (>) आपको उस ब्रांच में किए गए परिवर्तन को बताते हैं जिसे आपने अपनी वर्तमान ब्रांच में मर्ज करने का प्रयास किया था। बराबर संकेत (=) अंतरों को अलग करते हैं।

इस मामले में:

  • "This file is on the main branch." हमारी master ब्रांच (या HEAD) पर है।
  • "This file is on the dev branch." हमारी dev ब्रांच पर है।

इस मर्ज टूल कॉन्फ्लिक्ट को हल करने के लिए, आपको बस उस टेक्स्ट को हटाना होगा जो आप नहीं चाहते। मान लीजिए हम चाहते हैं कि हमारा कोड कहे: "This file is on a branch." हम इस संशोधन को इस तरह कर सकते हैं:

This is a README.md file. This is in a repository called merge-conflicts.
This file is on a branch.

एक बार जब हम ये परिवर्तन कर लेते हैं, तो हम अंतिम मर्ज करने के लिए तैयार हैं। आइए अपने परिवर्तनों को स्टेज करें, उन्हें अपने रिपॉजिटरी में कमिट करें, और अपनी dev और master ब्रांच को मर्ज करें:

git add .
git commit -m "feat: Resolve merge conflict."
git merge dev

अब जब हमने अपना मर्ज कॉन्फ्लिक्ट हल कर लिया है, तो हमारा कोड सफलतापूर्वक मर्ज हो जाता है।

निष्कर्ष

मर्ज कॉन्फ्लिक्ट तब उत्पन्न होते हैं जब आप दो ब्रांच पर टेक्स्ट की एक ही लाइन में परिवर्तन करते हैं या जहां आप एक ब्रांच पर फ़ाइल बदलते हैं और उस फ़ाइल को दूसरी ब्रांच पर हटाते हैं।

इस गाइड में, हमने दोनों मामलों में मर्ज कॉन्फ्लिक्ट को हल करने के तरीके पर चर्चा की है। अब आप Git विशेषज्ञ की तरह मर्ज कॉन्फ्लिक्ट से निपटने के लिए तैयार हैं।

  1. Gmail में मेल मर्ज कैसे भेजें Gmail में मेल मर्ज कैसे भेजें

    मेल मर्ज 90 के दशक का शब्द लगता है, है ना? लेकिन जितना अनफैशनेबल इसके बारे में बात करना हो सकता है, जब बड़ी संख्या में संपर्कों को ईमेल भेजने की बात आती है तो यह अभी भी जाने का रास्ता है। एक विशेष रूप से निफ्टी Gmail ऐड-ऑन के लिए धन्यवाद, यह करना पहले से कहीं ज्यादा आसान है। इस लेख में हम आपको दिखाए

  1. Git Error ठीक करें: You need to resolve your current index first Git Error ठीक करें: You need to resolve your current index first

    त्रुटि You need to resolve your current index first Git में होती है और इसका मतलब है कि एक मर्ज संघर्ष है और जब तक आप संघर्ष को हल नहीं करते, आपको दूसरी ब्रांच में चेकआउट करने की अनुमति नहीं दी जाएगी। यह त्रुटि संदेश यह भी दर्शाता है कि एक मर्ज विफल हुआ है या फाइलों के साथ संघर्ष हैं।ये सभी फाइलें, म

  1. Git मर्ज संघर्ष हल करें:  Index Needs Resolution  एरर के लिए चरण-दर-चरण सुधार Git मर्ज संघर्ष हल करें: 'Index Needs Resolution' एरर के लिए चरण-दर-चरण सुधार

    Git की कार्यक्षमता के साथ शाखाओं की एक अवधारणा जुड़ी हुई है। एक मास्टर ब्रांच होती है जिसके बाद कई शाखाएं उससे निकलती हैं। यदि आप एक शाखा से दूसरी शाखा पर स्विच करते हैं या यदि शाखा फाइलों से जुड़े संघर्ष हैं, तो आपको त्रुटि संदेश का सामना करना पड़ेगा, Git error: you need to resolve your current in