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

Git Revert कमिट: एक चरण-दर-चरण मार्गदर्शिका

अपना कोड वापस लें

कभी-कभी, जब आप Git रिपॉजिटरी के साथ काम कर रहे होते हैं, तो आप देख सकते हैं कि आपने अपने कमिट में गलती की है।

उदाहरण के लिए, मान लीजिए आपने अभी एक नई सुविधा पर काम करना समाप्त किया है, और आपको एहसास हुआ कि एक बग है जिसे ठीक करने की आवश्यकता है। जब आप बग फिक्स कमिट करते हैं, तो आप यह भी देखते हैं कि आपने उस नई सुविधा के लिए वर्किंग डायरेक्टरी कमिट कर दी है जिसे आप विकसित कर रहे हैं।

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

इस परिदृश्य में, आप अपने रिपॉजिटरी को उस स्थिति में वापस लाना चाह सकते हैं जो आपके कमिट को पुश करने से पहले थी। यह आपको Git में अपने कमिट को पुश करने का एक और मौका देगा अंतिम कमिट को वापस लाकर।

Git Revert कमांड

git revert कमांड आपको एक कमिट को पूर्ववत करने की अनुमति देता है। हालांकि, कमिट को प्रोजेक्ट से हटाने के बजाय, git revert कमांड अंतिम दो कमिट के बीच के परिवर्तनों को ढूंढता है और एक नया कमिट बनाता है जो उन परिवर्तनों को उलट देता है।

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

आपको git revert कमांड का उपयोग उन स्थितियों में करना चाहिए जहां आप अपने अंतिम कमिट को उलटना चाहते हैं। अपने अंतिम कमिट में आपको आवश्यक परिवर्तनों को मैन्युअल रूप से बनाने के बजाय, आप अपने कमिट को वापस ला सकते हैं और कोडबेस में एक नया पुश कर सकते हैं।

git revert कमांड के लिए सिंटैक्स इस प्रकार है:

git revert

आइए एक उदाहरण के माध्यम से देखें कि यह कमांड कैसे काम करता है।

Git Revert उदाहरण

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

git commit -m "docs: Update README.md with author info"

जब निष्पादित किया जाता है, तो यह कमांड docs: Update README.md with author info संदेश के साथ एक कमिट बनाता है। हमने अभी अपने README.md फ़ाइल में एक और परिवर्तन किया है, जिसे हम इस कमांड का उपयोग करके अपने रिपॉजिटरी में कमिट करते हैं:

git commit -m "docs: Update order of authors by contributions"

यह कमांड हमारे रिपॉजिटरी में एक और कमिट बनाता है। यदि हम git log --pretty=oneline कमांड का उपयोग करते हैं (जो हमें हमारे कमिट की एक छोटी सूची दिखाता है), तो हम देख सकते हैं कि हमारे रिपॉजिटरी इतिहास में दो कमिट हैं:

6f52d877873e7d3b52c929647384dfdf2488da22 (HEAD -> master) docs: Update order of authors by contributions
57d763663e619088159bb7629243456f88feab79 docs: Update README.md with author info

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

हम निम्नलिखित कमांड का उपयोग करके ऐसा कर सकते हैं:

git revert HEAD

जब हम इस कमांड को चलाते हैं, तो हमारा डिफ़ॉल्ट टेक्स्ट एडिटर खुलता है और हमें अपने कमिट के लिए एक संदेश बनाने के लिए प्रेरित करता है। इस कमांड में, HEAD नवीनतम कमिट को संदर्भित करता है। हमारे उदाहरण में, हम संदेश revert author order commit टाइप करते हैं। फिर, कमांड निम्नलिखित लौटाता है:

[master b66c29a] revert author order commit "docs: Update order of authors by contributions" 1 file changed, 1 deletion(-)

अब, जब हम git log --pretty=oneline कमांड चलाते हैं, तो हम देख सकते हैं कि एक नया कमिट बनाया गया है:

b66c29a8c4c226fa9ae8cd8f9e086c0a73e6ecfe (HEAD -> master) revert author order commit "docs: Update order of authors by contributions"
6f52d877873e7d3b52c929647384dfdf2488da22 docs: Update order of authors by contributions
57d763663e619088159bb7629243456f88feab79 docs: Update README.md with author info

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

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

यदि हम किसी अन्य कमिट पर वापस जाना चाहते थे, तो हम उस कमिट के लिए हैश मान निर्दिष्ट कर सकते थे। इसलिए, हमारी कमांड में HEAD बताने के बजाय, हम git log कमांड द्वारा लौटाए गए हैश का उपयोग करके अपनी पसंद के कमिट पर वापस जा सकते थे। यहां वह कमांड है जिसका उपयोग हम किसी रिपॉजिटरी को किसी विशिष्ट कमिट पर वापस लाने के लिए करेंगे:

git revert 57d763663e619088159bb7629243456f88feab79

यह कमांड हमारे रिपॉजिटरी को SHA हैश 57d763663e619088159bb7629243456f88feab79 वाले कमिट पर वापस लाएगा। इस रिपॉजिटरी में, वह हैश हमारे रिपॉजिटरी में किए गए पहले कमिट से मेल खाता है।

Git Revert बनाम Reset

revert और reset कमांड दोनों का उपयोग Git रिपॉजिटरी में पहले के कमिट से परिवर्तनों को पूर्ववत करने के लिए किया जाता है। हालांकि, आपको पता होना चाहिए कि इन कमांड्स का व्यवहार थोड़ा अलग है।

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

दूसरी ओर, git reset कमांड, एक निश्चित सीमा के बीच सभी कमिट को हटाकर रिपॉजिटरी को उसकी पिछली स्थिति में वापस लाता है। इसलिए, यदि आप git reset चलाते हैं और पिछले कमिट का संदर्भ देते हैं, तो रिपॉजिटरी की वर्तमान स्थिति और उस कमिट के बीच के सभी कमिट हटा दिए जाएंगे।

कमिट को वापस लेना अक्सर कमिट को रीसेट करने पर पसंद किया जाता है। मुख्य कारण यह है कि git revert आपके प्रोजेक्ट के इतिहास को नहीं बदलता है। यह आपको, डेवलपर को, प्रोजेक्ट में किए गए सभी परिवर्तनों का सटीक रिकॉर्ड बनाए रखने की अनुमति देता है।

इसके अलावा, git revert कमांड आपको अपने रिपॉजिटरी के इतिहास में किसी निश्चित बिंदु पर एक व्यक्तिगत कमिट पर वापस जाने की अनुमति देता है। दूसरी ओर, git reset कमांड, केवल उस कमिट से पीछे की ओर काम करता है जिस पर आप वर्तमान में हैं।

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

निष्कर्ष

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

इस ट्यूटोरियल ने चर्चा की कि Git में कमिट को वापस लेने के लिए git revert कमांड का उपयोग कैसे करें। अब आप पेशेवर डेवलपर की तरह git revert कमिट कमांड का उपयोग करके कमिट को वापस लेने के लिए तैयार हैं!

  1. Java कंपाइलर: एक चरण-दर-चरण गाइड Java कंपाइलर: एक चरण-दर-चरण गाइड

    पांच से दस साल पहले, Java सीखना अब जितना सुलभ नहीं था। तब, आपको Java Development Kit (JDK) डाउनलोड करना पड़ता था जिसमें आपके मशीन पर चलने के लिए कंपाइलर और इंटरप्रेटर शामिल होते थे। अब हमारे लिए मुफ्त में ऑनलाइन कई Java कंपाइलर उपलब्ध हैं। इस लेख में, हम बात करते हैं कि Java भाषा को कंपाइल करना कैसे

  1. jQuery find(): चरण-दर-चरण गाइड jQuery find(): चरण-दर-चरण गाइड

    jQuery find() मेथड परिचित लग सकता है, लेकिन इसे जावास्क्रिप्ट मेथड find() के साथ भ्रमित न करें! दोनों ढूंढते हैं, लेकिन वे क्या लौटाते हैं यह काफी अलग हो सकता है। जावास्क्रिप्ट में, find() मेथड को केवल एक ऐरे पर कॉल किया जा सकता है। यह एक कॉलबैक फंक्शन लेता है, जो एक फंक्शन है जिसे मेथड के आर्गुमेंट

  1. Git Cherry Pick: चरण-दर-चरण गाइड Git Cherry Pick: चरण-दर-चरण गाइड

    शुरुआती डेवलपर्स के रूप में, हम दोहराव के माध्यम से Git सीखते हैं। हम जल्दी सीखते हैं कि git pull, git push, और git commit का प्रत्येक का क्या अर्थ है। जैसे-जैसे हम बड़े प्रोजेक्ट्स पर काम करने और टीमों के साथ सहयोग करने के लिए संक्रमण करते हैं, हम अधिक उन्नत Git कमांड्स सीखना शुरू करते हैं जो एक प्