Git Reflog - एक हटाई गई शाखा को कैसे पुनर्प्राप्त करें जिसे विलय नहीं किया गया था



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

'क्या आपने कभी एक शाखा खो दी है, जिसका स्रोत कोड अभी तक branch रिलीज 'शाखा या branch मुख्य' शाखा में विलय नहीं हुआ था? क्या होगा यदि आप एक हटाए गए शाखा को पुनर्जीवित करना चाहते हैं, हालांकि इसका काम पहले ही मुख्य शाखा में विलय कर दिया गया है? ' । खैर, ऐसे परिदृश्यों का एकमात्र समाधान है फिर से जाना

Git Reflog के इस लेख के माध्यम से, मैं आपकी मदद करूंगाउन परिदृश्यों को समझें जिनमें एक शाखा पर आपका काम खो सकता है और शाखा को कैसे पुनर्प्राप्त किया जा सकता है।इसके अलावा, यह आलेख एक बड़े प्रोजेक्ट में काम करते समय शाखा के अनपेक्षित नुकसान को रोकने के लिए आपके द्वारा उठाए गए दृष्टिकोण को उजागर करेगा।





लॉजिस्टिक रिग्रेशन पायथन उदाहरण कोड
    1. Git Reflog क्या है?
    2. शाखा कैसे और कब हटाई जाती है?
    3. हटाई गई शाखा पुनर्प्राप्त करें
    4. जब हटाए गए शाखा को पुनर्प्राप्त किया जाता है तो क्या काम बहाल किया जाता है?
    5. Git Reflog उप-आदेश

तो, हम इस लेख के साथ शुरुआत करते हैं।



एक परिदृश्य पर विचार करें, एक एमaintainer को अलग-अलग सहयोगियों से कई फ़ीचर शाखाओं को मर्ज करना पड़ता है और फिर अंततः उन्हें हटाना पड़ता है, लेकिन कार्य को मर्ज किए जाने से पहले गलती से शाखा को हटा दिया जाता है?

खैर, इससे पहले कि मैं इस लेख पर आगे बढ़ूँ, आपको बता दूं कि यह Git में संभव नहीं है। सुरक्षित हैं और चेक पोस्ट के रूप में कार्य करते हैं ताकि आप ऐसा न कर सकें। तो, यह वह जगह है जहाँ Git Reflog चित्र में आता है।

Git Reflog क्या है?

'रिफ्लॉग' कमांड एक रखता है ध्यान रखना संदर्भों में किए गए हर एक परिवर्तन (शाखा या टैग) एक रिपॉजिटरी का और उन शाखाओं और टैगों का लॉग इतिहास रखता है जो या तो स्थानीय रूप से बनाए गए थे या चेक किए गए थे। जब शाखा का निर्माण या क्लोन किया गया, चेक-आउट किया गया, नाम बदला गया, या शाखा पर किए गए किसी भी प्रकार के प्रतिबद्ध स्नैपशॉट जैसे संदर्भ लॉग द्वारा बनाए रखा जाता है और log रिफ्लॉग ’कमांड द्वारा सूचीबद्ध।



ध्यान दें: शाखा आपके कार्यशील निर्देशिका से तभी पुनर्प्राप्त होगी जब शाखा कभी आपके स्थानीय भंडार में मौजूद हो यानी शाखा को अपने संदर्भ इतिहास लॉग को संग्रहीत करने के लिए Git के लिए स्थानीय रिपॉजिटरी में दूरस्थ रिपॉजिटरी से स्थानीय या चेक-आउट बनाया गया था।

इस कमांड को उस रिपॉजिटरी में निष्पादित किया जाना है जिसकी खोई हुई शाखा थी। यदि आप विचार करते हैंदूरस्थ रिपॉजिटरी स्थिति, फिर आपको डेवलपर की मशीन पर रिफ्लॉग कमांड निष्पादित करना होगा, जिसकी शाखा थी।

आदेश: फिर से जाना

अब जब आप जानते हैं कि Git Reflog क्या है, तो आइएएक मर्ज की गई और एक मर्ज की गई शाखा को हटाने की कोशिश करें और देखें कि Git कैसे संभालता है?

चरण 1: उन शाखाओं को सूचीबद्ध करें जिन्हें मास्टर में विलय कर दिया गया है

सबसे पहले, the में देखें गुरुजी यदि आप कमांड का उपयोग कर किसी अन्य शाखा में हैं, तो शाखा:

$ गिट चेकआउट मास्टर

आउटपुट

Git चेकआउट मास्टर - Git Reflog - Edureka

अब, विलय की गई शाखाओं की सूची प्राप्त करने के लिए, निम्नलिखित कमांड का उल्लेख करें:

$ गिट शाखा - डूबा हुआ

आउटपुट:

चरण 1.1: फिर, विलय की गई शाखा को हटा दें:

$ git शाखा -d अंक # 902

आउटपुट:

शाखा it अंक # 902 ’को सफलतापूर्वक हटा दिया गया क्योंकि यह पहले से ही‘ मास्टर ’शाखा में विलय कर दिया गया है।

चरण 2: अब, हम उन शाखाओं को सूचीबद्ध करते हैं जो मास्टर में विलय नहीं हुई हैं।

$ गिट शाखा - कोई विलय नहीं हुआ

आउटपुट

चरण २.२: अंत में, निम्नलिखित कमांड के साथ एक संयुक्त विलय वाली शाखा को हटा दें:

$ git शाखा -d prepod

यदि आप अन-फिनिश्ड वर्क वाली 'प्रीप्रोड' शाखा के साथ शाखाओं में से एक को हटाने की कोशिश करते हैं, तो गिट एक चेतावनी संदेश प्रदर्शित करता है।

आउटपुट

अब, इससे पहले कि मैं आपको बताऊं कि आप इस लेख को Git Reflog पर कैसे डेटा पुनर्प्राप्त कर सकते हैं, मैं आपको बताता हूं कि जब एक शाखा हटा दी जाती है और शाखा किन परिस्थितियों में पुनर्प्राप्त की जा सकती है।

शाखा कैसे और कब हटाई जाती है?

जैसा कि हम जानते हैं कि Git एक है वितरित संस्करण नियंत्रण प्रणाली (डीवीसीएस), क्लोन के साथ प्रत्येक मशीन या रिपोजिटरी अधिनियम की एक प्रति दोनों नोड और एक हब । यहतात्पर्य है कि प्रत्येक मशीन के पास पूरे रिपॉजिटरी कोड और इतिहास की अपनी प्रति होगी।कहने की जरूरत नहीं कि आप होंगे साझा करना दूसरों के साथ आपका काम और प्रकाशन वही।

इसलिए, ऐसे परिदृश्यों में, 3 मामले हो सकते हैं, जब एक शाखा वास्तविक परियोजना के परिदृश्य में एक बड़ी परियोजना पर काम करने वाले कई योगदानकर्ताओं के साथ हटा दी जाती है। निम्नलिखित मामले हो सकते हैं:

केस 1 - एक डेवलपर या तो विलय कर सकता है या शाखा को हटा सकता है

एक परिदृश्य पर विचार करें जहां एक डेवलपर स्थानीय स्तर पर मुख्य शाखा में सुविधा शाखा का विलय करता है और फिर where का उपयोग करके सुविधा शाखा को हटा देता है गिट शाखा '- के साथ कमांड d “ध्वज जैसा कि पहले के स्क्रीनशॉट में देखा गया है।

आदेश: ‘गिट शाखा -d शाखा_नाम’

यह भी हो सकता है कि डेवलपर शाखा के परिवर्तनों को रद्दी करने का निर्णय लेता है और निम्नलिखित आदेश का उपयोग करके किसी अन्य शाखा के साथ विलय किए बिना शाखा को हटाने का निर्णय लेता है:

आदेश: 'Git शाखा -D Branch_name'

उपरोक्त कमांड के साथ, डेवलपर हैजोरदार चेतावनी को हटाते हुए शाखा को बलपूर्वक हटाएं

$ git शाखा -D preprod

आउटपुट

ध्यान दें : प्रिट्रोड ’शाखा अब सूचीबद्ध नहीं होगी जब आप’ गिट शाखा ’कमांड चलाते हैं। तो, yइस शाखा में सहेजा गया हमारा काम खो जाएगा।

केस 2 - एक डेवलपर एक साझा रिपॉजिटरी में एक शाखा को हटाता है

एक परिदृश्य पर विचार करें, जहां एक डेवलपर पढ़ने / लिखने के साथ दूरस्थ शाखा को बलपूर्वक हटाने का प्रयास करता हैthe-gill पुश ’कमांड का उपयोग lete –delete’ झंडे के साथ करें।

$ गिट धक्का मूल - जल्दी उपसर्ग

आउटपुट

इसके अलावा, ऐसा मामला भी हो सकता है जहां एक गैर-अधिकृत या दुर्भावनापूर्ण उपयोगकर्ता दूरस्थ शाखा को हटाने के लिए एक धक्का देता है।ऐसे मामले में, अनुरक्षक केवल maintain क्विकफिक्स ’शाखा को ही पुनर्प्राप्त कर पाएगा, यदि डेवलपरपहले इस शाखा की जाँच की थी। इस परिदृश्य में, इसके स्थानीय रिपॉजिटरी में अभी भी इसके संदर्भ लॉग होंगे।

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

केस 3 - सुपर विशेषाधिकारों वाली एक हुक स्क्रिप्ट शाखा को हटा देती है

यह एक दुर्लभ लेकिन, एक संभावित परिदृश्य हो सकता है कि हुक स्क्रिप्ट कुछ गिट ऑपरेशन इवेंट में ट्रिगर हो जाती है और बल उन शाखाओं को हटा देती है जो अभी विलय नहीं हुई हैं। आप ऐसा कर सकते हैंउपर्युक्त आदेशों में से एक को सूडो विशेषाधिकारों के साथ हुक स्क्रिप्ट में माना जा रहा है।

अब, जब आप जानते हैं कि क्या होता है, जब आप शाखा को हटाते हैं, तो हम Git Reflog पर इस लेख के साथ आगे बढ़ते हैं और देखते हैं कि खोई हुई शाखा को कैसे पुनर्प्राप्त किया जाए।

Git Reflog का उपयोग करके हटाए गए शाखा को पुनर्प्राप्त करें

स्टेप 1 : सभी संदर्भों का इतिहास लॉग

इस रिपॉजिटरी में सभी संदर्भों (, मास्टर ’, of uat’ और ’prepod’) के लिए सभी स्थानीय रिकॉर्ड किए गए इतिहास लॉग की सूची प्राप्त करें।

फिर से जाना

चरण 2 : इतिहास की मोहर को पहचानें

जैसा कि आप उपरोक्त स्नैपशॉट से संदर्भित कर सकते हैं, हाइलाइट की गई आईडी: e2225bb HEAD पॉइंटर इंडेक्स के साथ: 4 एक है जब ‘ पुनर्विक्रय आपके नवीनतम कार्य की ओर इशारा करते हुए वर्तमान HEAD पॉइंटर से शाखा बनाई गई थी।

चरण 3 : वसूल करना

वापस ठीक होने के लिए ‘पुनर्विक्रय Command शाखा कमांड का उपयोग करती हैसूचकांक आईडी के साथ HEAD पॉइंटर रेफरेंस को पास करने के लिए 'git चेकआउट' - 4यह सूचक संदर्भ है जब आउटपुट स्क्रीनशॉट में p प्रीप्रोड ’शाखा को लंबी प्रतिबद्ध आईडी बनाया गया था।

git checkout -b preprod HEAD @ {4}

आउटपुट

और वोइला! ‘ पुनर्विक्रय Code शाखा आपके सभी स्रोत कोड के साथ वापस आ जाती है।

ध्यान दें : मुझे बीऊपर इस्तेमाल किया गया 'चेक चेकआउट' कमांड को फिर से तैयार करें और आपको बेहतर समझने में मदद करें:

Loaded git चेकआउट 'कमांड एक ओवर-लोडेड कमांड है (किसी भी जावा अतिभारित फ़ंक्शन की तरह)। यह वह हिस्सा है जहां वास्तविक शाखा बरामद होती है।

यह एकल आदेश सबसे पहले इतिहास द्वारा देखे गए टाइमस्टैम्प की ओर इशारा करता है HEAD @ {4} सूचक और फिर “-b” विकल्प का उपयोग करके p प्रीप्रोड ’नाम के साथ एक शाखा बनाता है और साथ ही अपनी कार्यशील निर्देशिका को नई बनाई गई शाखा में स्विच करता है।

इसका तात्पर्य यह है कि स्विच की गई शाखा आउटपुट स्क्रीन में इंगित किए गए 'मास्टर' से 'प्रीप्रोड' तक होगी।अब आप इसे अपने ब्रांचिंग मॉडल के अनुसार ’मास्टर’ या branch रिलीज़ ’शाखा में विलय कर सकते हैं।

अब, जब आप जानते हैं कि एक शाखा को कैसे पुनर्स्थापित किया जाए, तो मैं आपको बताता हूं कि जब एक हटाए गए शाखा को पुनर्प्राप्त किया जाता है, तो कौन सा काम बहाल होता है।

जब हटाए गए शाखा को पुनर्प्राप्त किया जाता है तो क्या काम बहाल किया जाता है?

स्टैस इंडेक्स लिस्ट में जो फाइलें स्टैक्ड और सेव थीं, उन्हें वापस रिकवर किया जाएगा। कोई भी अनटैक की गई फाइल खो जाएगी। मैं भीt एक अच्छा विचार है कि हमेशा अपने काम को मंच दें और उन्हें कम करें।

किसी विशेष शाखा के लॉग संदर्भों को लाने या टैग चलाने के लिए - 'git reflog'।

उदाहरण: अकेले 'यूट' शाखा के लॉग संदर्भों की जाँच करने के लिए कमांड का उपयोग करें - 'गिट रिफ्लट यूट'।

Git Reflog उप-आदेश

फिर से जाना

मैनुअल पेज खोलने की आज्ञा

$ git रीफ्लोग --help

आउटपुट

फिर से जाना प्रदर्शन

कमांड लाइन में दिए गए संदर्भ के लॉग दिखाता है।

git reflog शो मास्टर @ {0}

फिर से जाना समाप्त होना

इस कमांड का इस्तेमाल पुराने रिफ्लॉग एंट्रीज को प्रून करने के लिए किया जाता है।

गिट रिफ्लग एक्सपायर

फिर से जाना हटा दें

यह कमांड रीफ़्लो इतिहास से एकल प्रविष्टियों को हटा देती है।

git reflog डिलीट

फिर से जाना मौजूद

यह कमांड जाँचता है कि क्या रेफरी (शाखा या टैग) के पास रिफ्लॉग - लॉग इतिहास प्रविष्टियाँ हैं।

git reflog मौजूद है

उपर्युक्त आदेशों के अलावा, 'गिट रिफ्लॉग' कमांड विभिन्न उप-प्रोग्रामों को लेती है, और उपर्युक्त उप-वर्गों के आधार पर विभिन्न विकल्प। आगे पढ़ने के लिए दौड़ ” git reflog –help “टर्मिनल विंडो से।

इसके साथ, हम Git Reflog के इस लेख के अंत में आते हैं।DevOps का उद्देश्य टीमों के बीच अधिक संचार और सहयोग को आमंत्रित करते हुए बेहतर गुणवत्ता वाले सॉफ़्टवेयर को अधिक तेज़ी से और अधिक विश्वसनीयता के साथ बनाना है। यदि आप इस लेख द्वारा अंतर्ग्रही हैं, सी बाहर निकालो 250,000 से अधिक संतुष्ट शिक्षार्थियों के एक नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा, दुनिया भर में फैली हुई है। Edureka DevOps प्रमाणन प्रशिक्षण पाठ्यक्रम शिक्षार्थियों को यह समझने में मदद करता है कि DevOps क्या है और विभिन्न DevOps प्रक्रियाओं में विशेषज्ञता प्राप्त करता है और कठपुतली, जेनकींस, नगिओस, Ansible, शेफ, साल्टस्टैक और GIT जैसे विभिन्न चरणों को SDLC में स्वचालित करने के लिए।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया 'Git Reflog' लेख के टिप्पणी अनुभाग में इसका उल्लेख करें और हम आपको ASAP में वापस मिलेंगे।