असंबंधित गिट इतिहास का विलय - एक सरल मार्गदर्शिका

क्या आप दो Git रिपॉजिटरी या शाखाओं में फंस गए हैं जिनका इतिहास पूरी तरह से अलग है, लेकिन आपको उन्हें मर्ज करने की आवश्यकता है? हो सकता है कि आप किसी बाधा का सामना कर रहे हों क्योंकि Git को डिफ़ॉल्ट रूप से इस प्रकार के ऑपरेशन को रोकने के लिए डिज़ाइन किया गया है। हालाँकि, इसके लिए एक समाधान मौजूद है और यह जितना आप सोच सकते हैं उससे कहीं अधिक सरल है।

समस्या: असंबंधित गिट इतिहास#

कल्पना कीजिए कि आप एक ऐसे प्रोजेक्ट पर काम कर रहे हैं जहां आपकी एक main शाखा है, और किसी और के पास अपने स्वयं के इतिहास के साथ एक पूरी तरह से अलग प्रोजेक्ट है। अब, आप दोनों परियोजनाओं को एक ही भंडार में संयोजित करना चाहते हैं। यदि आप नियमित git merge या git rebase करने का प्रयास करते हैं, तो Git संभवतः आपको एक त्रुटि संदेश के साथ रोक देगा, कुछ इस तरह:

CODE_ब्लॉक_3

समाधान: असंबंधित इतिहास की अनुमति दें#

इस समस्या को हल करने की कुंजी --allow-unrelated-histories ध्वज में निहित है। यह विकल्प गिट को इस तथ्य को नजरअंदाज करने और विलय के साथ आगे बढ़ने के लिए कहता है कि दोनों शाखाओं का कोई सामान्य आधार नहीं है।

यहां एक सरल चरण-दर-चरण मार्गदर्शिका दी गई है:

  1. अन्य रिपॉजिटरी प्राप्त करें: यदि आप एक अलग रिपॉजिटरी के साथ काम कर रहे हैं, तो आपको सबसे पहले इसे अपने वर्तमान रिपॉजिटरी में लाना होगा। आप इसके साथ ऐसा कर सकते हैं:

    कोड_ब्लॉक_5

  2. लक्ष्य शाखा पर स्विच करें: सुनिश्चित करें कि आप उस शाखा में हैं जिसमें आप असंबंधित इतिहास को मर्ज करना चाहते हैं। आमतौर पर, यह आपकी main शाखा होगी:

    CODE_ब्लॉक_7

  3. मर्ज करें: अब, --allow-unrelated-histories ध्वज के साथ वास्तविक मर्ज करें:

    CODE_ब्लॉक_9

  4. विरोधों का समाधान करें: यदि कोई फ़ाइल विरोध है, तो उन्हें वैसे ही हल करें जैसे आप आमतौर पर करते हैं।

  5. कमिट करें और पुश करें: अंत में, परिवर्तन करें और उन्हें अपने रिपॉजिटरी में पुश करें:

    CODE_ब्लॉक_10

और वोइला! आपने दो असंबंधित Git इतिहासों का सफलतापूर्वक विलय कर दिया है।

हालाँकि असंबद्ध Git इतिहास को मर्ज करने की आवश्यकता दुर्लभ है, यह जानना अच्छा है कि आपके पास ज़रूरत पड़ने पर काम पूरा करने के लिए उपकरण हैं। याद रखें, --allow-unrelated-histories ध्वज का उपयोग बुद्धिमानी और सावधानी से करें, क्योंकि यह आपके Git इतिहास में महत्वपूर्ण बदलाव कर सकता है।