Git - कई git शाखाओं को कैसे स्टैक करें और उन्हें एक समर्थक की तरह रिबेट करें

कठिनाई: मध्यवर्ती

जीआईटी के साथ सहज महसूस करना शुरू करने में मुझे काफी समय लगा, और हालांकि मुझे अभी भी पता है कि मेरे पास सीखने के लिए बहुत कुछ है जिसे मैं अंत में पंगा नहीं लेने के लिए आश्वस्त महसूस करता हूं।

मैंने इस ब्लॉग पोस्ट को कुछ git tips को साझा करने के लिए लिखने का फैसला किया है जो मुझे हर दिन बहुत मदद करते हैं और मैं लगातार लोगों को संघर्ष करते हुए देखता हूं:

  1. सबसे कुशल तरीके से मास्टर के शीर्ष पर अपनी शाखा को कैसे रिबेस करें।
  2. एक दूसरे के ऊपर शाखाओं को कैसे स्टैक करें और रिबास का उपयोग करके सभी को अपडेट रखें

नोट: ये सभी युक्तियां मान रही हैं कि आप रिबास वर्कफ़्लो का उपयोग करते हैं न कि मर्ज वर्कफ़्लो का। मैं रिबेट वर्कफ़्लो के उपयोग की सलाह देता हूँ, हालाँकि, यह एक और पोस्ट के लिए चर्चा है :)

1. सबसे कुशल तरीके से मास्टर के शीर्ष पर अपनी शाखा को कैसे रिबेस करें।

मैं देख रहा हूँ बहुत से लोग कर रहे हैं:

  • गिट चेकआउट मास्टर
  • पकड़ खींचो
  • git checkout branch_to_rebase
  • git rebase मास्टर

आप सीधे अपने दूरस्थ मास्टर शाखा के खिलाफ रिबास चलाकर इस प्रवाह को अनुकूलित कर सकते हैं:

  • git fetch Origin - यह आपके रिमोट से नवीनतम मेटा-डेटा जानकारी को पुनः प्राप्त करेगा, लेकिन git पुल के विपरीत यह किसी भी फाइल को स्थानांतरित नहीं करेगा।
  • git रिबेस मूल / मास्टर

2. एक दूसरे के ऊपर शाखाओं को कैसे स्टैक करें और रिबास का उपयोग करके सभी को अपडेट रखें

यदि आपके पास केवल एक शाखा है, तो पिछला तरीका यह सुनिश्चित करने के लिए पर्याप्त है कि आपकी शाखा हमेशा मास्टर में नवीनतम परिवर्तनों के साथ अपडेट की जाती है।

समस्या तब शुरू होती है जब आपके पास एक दूसरे के आधार पर कई शाखाएँ होती हैं।

आइए निम्न स्थिति की कल्पना करें:

  • सुविधा A पर काम शुरू करने के लिए आप एक नई शाखा बनाते हैं
  • आप सभी काम पूरा करते हैं और अपनी टीम की समीक्षा के लिए एक पुल अनुरोध खोलें।
  • चूँकि आप अवरुद्ध नहीं होना चाहते हैं, आप फीचर A पर काम करना शुरू कर देते हैं जो सुविधा A पर निर्भर करता है, इसलिए आप शाखा-A के ऊपर एक नई शाखा-B बनाते हैं।
  • इस बीच, आप सभी पीआर टिप्पणियों को ठीक करने के लिए ब्रांच-ए को रीबेस और अपडेट करते हैं।
  • आप वापस शाखा-बी में जाते हैं और आप इसे शाखा-ए में नवीनतम परिवर्तनों के साथ अपडेट करना चाहते हैं।
  • आप कोशिश करते हैं "गिट रीबेस ब्रांच-ए" और गिट बहुत बकवास संघर्षों के बारे में शिकायत करते हैं।

तो, वहाँ क्या हुआ?

मूल रूप से, जब आपने शाखा-ए को अपडेट किया था, तो हो सकता है कि आपने उस शाखा से कुछ कमिटेड हैश बदल दिए हों, लेकिन शाखा-बी के बारे में अभी तक उन्हें जानकारी नहीं है। इस प्रकार, जब आप शाखा-ए के शीर्ष पर शाखा-बी को रिबेट करते हैं, तो गिट को लगता है कि शाखा-ए से पुराने कमिट्स नए हैं और शाखा-बी का हिस्सा हैं, इसलिए यह अपने आप से टकराव पैदा कर सकता है। मुझे उन्हें कॉल करना पसंद है: "बार-बार आना"।

यह बेहतर रिबास वर्कफ़्लो के नंबर 1 आलोचनात्मक पहलू है - यह तथ्य कि यह गिट इतिहास और कुछ उपकरणों के साथ गड़बड़ करता है, जिसमें जीआईटी भी शामिल है, इससे भ्रमित हो जाते हैं। लेकिन ईमानदारी से, अगर आप समझते हैं कि गिट कैसे काम करता है, तो यह कभी भी समस्या नहीं होगी, इसके विपरीत, यह आपके गिट इतिहास को कभी भी स्पष्ट नहीं करेगा।

इसे ठीक करने का एक से अधिक तरीका है, लेकिन इसे हल करने का एक आसान तरीका है:

  • ब्रांच-बी रन से "गिट रिबेस -आई ब्रांच-ए" यह रिबेस को इंटरएक्टिव और एडिटेबल बना देगा।
  • शाखा-ए पर उपस्थित शाखा-ए से सभी पुराने / बार-बार आने वाले ड्रॉप्स को छोड़ें। आपको यह सुनिश्चित करना होगा कि केवल शाखा-बी से ही छूट दी जाएगी।
उदाहरण: git rebase -i शाखा-ए

बस! कोई और अधिक बकवास नहीं। आप अभी भी संघर्ष कर सकते हैं, लेकिन जिन्हें आपको ठीक करने की आवश्यकता है :)

यह सभी देखें

एक औसत सॉफ्टवेयर डेवलपर के लक्षण क्या हैं, और एक औसत से एक अच्छे सॉफ्टवेयर डेवलपर में कैसे सुधार होता है? मैं अपने एक्सेल कौशल को जल्दी कैसे सुधार सकता हूं? Android और iOS आंतरिक रूप से कैसे काम करते हैं, इसके तकनीकी अंतर क्या हैं? मैं जूनियर फ्रंट-एंड डेवलपर से फ्रंट-एंड डेवलपर में संक्रमण कैसे करूं? मैंने कैसे और कहाँ से मदद करने वालों को पाया जो मुझे एक फ्रेशर के रूप में डेटा साइंस सीखने में मदद करेंगे जो मैं सीखना चाहता हूं लेकिन मुझे सही तरीके से बात नहीं आती? 29 की उम्र में, मुझे कौन सी प्रोग्रामिंग लैंग्वेज सीखनी चाहिए और उन्हें कितना समय लगेगा? मैं वेब विकास व्यवसाय कैसे शुरू करूं? ps3 को पुनः आरंभ कैसे करें