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

बचाव के लिए गिट रीसेट

जब आप किसी प्रोजेक्ट पर स्वयं या टीम के हिस्से के रूप में काम कर रहे हों, तो ऐसे उदाहरण हो सकते हैं जब आप किसी कमिट को पूर्ववत करना चाहते हैं। git reset कमांड वास्तविक जीवन रक्षक के रूप में जाने जाने वाले उपकरणों में से एक है।

Git का ट्रैकिंग तंत्र

git reset में जाने से पहले , हमें गिट की अंतर्निहित संरचना के बारे में समझने की जरूरत है। गिट नोड्स और पॉइंटर्स के साथ पेड़ जैसी संरचनाओं के माध्यम से फाइलों का प्रबंधन और ट्रैक करता है।

आपके स्थानीय गिट भंडार पर मूल रूप से इनमें से तीन "पेड़" हैं:

  1. कार्य निर्देशिका :या वर्किंग ट्री, और यह आपकी स्थानीय निर्देशिका और git status . को संदर्भित करता है आपको आपकी कार्यशील निर्देशिका की स्थिति देगा।
  2. सिर :क्या आपकी वर्तमान शाखा का अंतिम प्रतिबद्ध स्नैपशॉट है। यदि आप git checkout with के साथ शाखाओं को स्विच करना चाहते हैं तब HEAD शाखा पर अंतिम प्रतिबद्धता में बदल जाएगा।
  3. सूचकांक :या मंचन क्षेत्र। तो जब आप git add प्रतिबद्ध करने के लिए फ़ाइलें उन्हें इस अनुक्रमणिका में जोड़ती हैं।

गिट कार्यप्रवाह

निम्न उदाहरण किसी फ़ाइल में परिवर्तन करना और फिर उसे git add का उपयोग करके अनुक्रमणिका (स्टेजिंग) में जोड़ना दिखाता है फिर git status checking चेक कर रहे हैं किए जाने वाले परिवर्तनों को देखने के लिए।

बचाव के लिए गिट रीसेट

अब जब हम git commit करते हैं यह एक अधिक स्थायी स्नैपशॉट के रूप में सहेजता है और उस पॉइंटर पर मास्टर और हेड को अपडेट करता है। तो अगर हम git status करते हैं git commit . के बाद , हम देखेंगे कि तीनों पेड़ एक ही स्थिति में हैं (कुछ भी नहीं करना होगा)।

बचाव के लिए गिट रीसेट

तो इसका उद्देश्य क्या है गिट रीसेट ?

आप सोच रहे होंगे कि यह सब प्रस्तावना सिर्फ git reset . पाने के लिए ही क्यों है? . खैर git reset इन पेड़ों को अलग-अलग तरीकों से हेरफेर करता है। तो आप जो करना चाहते हैं उसके आधार पर git रीसेट विभिन्न विकल्पों को स्वीकार करेगा।

गिट रीसेट मोड

मान लीजिए कि हमने कुछ बदलाव और फाइलें की हैं, फिर यह महसूस करने के लिए कि हमने उन्हें गलत शाखा में डाल दिया है या हमारी प्रतिबद्धता छोटी है इसलिए हम रिवाइंड करना चाहते हैं। यहां जानिए git रीसेट मोड के बारे में उपयोगी है।

81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।

बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।

मोड के साथ सभी गिट रीसेट हेड पॉइंटर को अपडेट करेंगे। इसमें निम्नलिखित सिंटैक्स है

git reset <mode> <commit-optional>

मुख्य तरीके हैं:

  • --soft :हेड पॉइंटर को रीसेट करता है और इंडेक्स और वर्किंग डायरेक्टरी को अछूता छोड़ देता है। तो आपका HEAD रीसेट हो जाएगा और अन्य पेड़ अभी भी नवीनतम परिवर्तन दिखा रहे हैं।
  • --mixed :डिफ़ॉल्ट विकल्प। HEAD और इंडेक्स को रीसेट करता है। यह मूल रूप से आपके सभी परिवर्तनों को अन-स्टेज करता है और आपके git add . करने से पहले आपको छोड़ देता है . नोट: यदि आप बिना किसी विकल्प के अपने आप git रीसेट करते हैं, तो इसकी व्याख्या git reset --mixed के रूप में की जाएगी ।
  • --hard :इससे सावधान रहें . HEAD, अनुक्रमणिका को रीसेट करने के अलावा, यह आपकी कार्यशील निर्देशिका को भी रीसेट करता है। तो आप लिखित कोड खो सकते हैं! वर्तमान HEAD पॉइंटर (अंतिम कमिट) के बाद किसी भी बदलाव के रूप में इसे छोड़ दिया जाता है।

अन्य मोड जैसे --merge और --keep आधिकारिक दस्तावेज़ीकरण में पढ़ा जा सकता है।

उपयोगी गिट रीसेट तरकीबें

प्रतिबद्धता को वापस करना

याद रखें कि यदि हम मोड को छोड़ देते हैं (बिना किसी विकल्प के गिट रीसेट) तो इसकी व्याख्या -मिश्रित के रूप में की जाएगी।

अब अगर हम सिर्फ टाइप करें git reset HEAD कुछ नहीं होगा, लेकिन अगर हम git reset HEAD~1 . करते हैं तो हमारा HEAD अब अपनी पिछली प्रतिबद्धता की ओर इशारा करेगा।

निम्नलिखित उदाहरण पिछले एक से जारी है। मान लीजिए कि हम अपनी नमूना फ़ाइल में नया टेक्स्ट जोड़ते हैं। फिर हम ऐड और कमिट करते हैं। फिर जब हम git रीसेट HEAD~1 करते हैं, तो हमारे सभी परिवर्तन बिना चरण के और पिछली प्रतिबद्धता पर होते हैं।

बचाव के लिए गिट रीसेट

जब हम किसी कमिट को पूर्ववत करना चाहते हैं तो यह एक उपयोगी और तेज़ तरीका है!

किसी विशिष्ट फ़ाइल को अन-स्टेजिंग करना

मान लीजिए कि आपने git ऐड के साथ इंडेक्स में एक फाइल जोड़ी है। हम केवल निम्न कार्य करके उस फ़ाइल को हटा सकते हैं:

git reset HEAD <file-name>

परिदृश्य:मैंने अपना सारा कोड खराब कर दिया है! क्या मैं वापस जा सकता हूँ जब यह काम कर रहा था?

यदि आप सभी स्थानीय परिवर्तनों को दूर करना चाहते हैं और अपनी पिछली प्रतिबद्धता पर वापस जाना चाहते हैं तो आपका अंतिम उपाय git reset --hard है .

अक्सर यदि आप अपना कोड तोड़ते हैं तो यह आपका एकमात्र विकल्प हो सकता है। यदि आप प्रतिबद्ध हैश जानते हैं तो आप do git reset --hard <commit> . लेकिन ध्यान दें कि यह विशिष्ट कमिट (यदि कोई हो) के बाद किसी अन्य कमिट को भी प्रभावित करेगा!

परिदृश्य:यह प्रतिबद्धता एक नई शाखा में होनी चाहिए थी!

ऐसा अक्सर होता है, खासकर जब आप प्रोडक्शन में काम करना शुरू कर रहे हों। अगर आपके साथ ऐसा होता है, तो घबराने की जरूरत नहीं है!

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

git branch new-branch

git reset HEAD~1 --hard

git checkout new-branch

जीवनरक्षक सही!

एक अंतिम शब्द

git reset --hard करते समय सावधान रहें और यह भी कि जब आप किसी विशिष्ट प्रतिबद्धता के लिए रिवाइंड कर रहे हों, विशेष रूप से उत्पादन कोड में और जब आप अन्य डेवलपर्स के साथ काम कर रहे हों। अक्सर git revert इन परिवर्तनों को करने का सुरक्षित तरीका है। लेकिन यह दूसरी बार बातचीत है। तब तक! 👋🏼


  1. पासवर्ड के बिना मैक को कैसे रीसेट करें

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

  1. लिनक्स में रूट पासवर्ड कैसे रीसेट करें

    लिनक्स में, नियमित उपयोगकर्ताओं और सुपर उपयोगकर्ताओं को पासवर्ड प्रमाणीकरण के माध्यम से सेवाओं तक पहुंचने की अनुमति है। यदि कोई नियमित उपयोगकर्ता अपना पासवर्ड याद नहीं रख सकता है, तो एक सुपरयूज़र टर्मिनल से ही एक नियमित उपयोगकर्ता का पासवर्ड रीसेट कर सकता है। हालाँकि, क्या होगा यदि सुपरयूज़र (या रूट

  1. गीता के लिए शुरुआती गाइड

    यदि आप एक लिनक्स उपयोगकर्ता हैं, तो आप शायद किसी बिंदु पर गिट में आ सकते हैं, शायद एक नया प्रोग्राम डाउनलोड करने का प्रयास करते समय या सीवीएस या सबवर्जन जैसे संस्करण नियंत्रण प्रणालियों को देखते हुए। मौजूदा समाधानों के साथ संतुष्टि की कमी के कारण, गिट लिनक्स कर्नेल के प्रसिद्ध लिनुस टोरवाल्ड्स द्वार