Git ब्रांच से कमिट कैसे हटाएं

Git ब्रांच से कमिट कैसे हटाएं
Git ब्रांच से कमिट कैसे हटाएं

Git में कमिट इतिहास का प्रबंधन

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

इस गाइड में, हम आपके शाखा इतिहास से किसी प्रतिबद्धता को हटाने के विभिन्न तरीकों का पता लगाएंगे। हम यह भी चर्चा करेंगे कि क्या `गिट रीसेट --हार्ड हेड` का उपयोग करना सही दृष्टिकोण है और इस आदेश के संभावित परिणाम क्या हैं।

आज्ञा विवरण
git reset --hard HEAD~1 कार्यशील निर्देशिका और अनुक्रमणिका में सभी परिवर्तनों को त्यागते हुए, वर्तमान शाखा को सबसे हालिया कमिट से पहले कमिट में रीसेट करता है।
git rebase -i HEAD~N अंतिम एन कमिट की समीक्षा और संशोधन के लिए एक इंटरैक्टिव रिबेस सत्र शुरू करता है।
drop इतिहास से किसी कमिट को हटाने के लिए इंटरैक्टिव रीबेस में उपयोग किया जाता है।
edit किसी विशिष्ट प्रतिबद्धता को संशोधित करने के लिए इंटरैक्टिव रिबेस में उपयोग किया जाता है।
git commit --amend --no-edit कमिट संदेश को बदले बिना पिछली कमिट में संशोधन करता है।
git rebase --continue विवादों के सुलझने या बदलावों में संशोधन के बाद रिबेस प्रक्रिया जारी रहती है।
git push origin branch-name --force दूरस्थ शाखा को स्थानीय शाखा से अधिलेखित करते हुए, दूरस्थ रिपॉजिटरी पर दबाव डालता है।

कमिट रिमूवल के लिए Git कमांड की व्याख्या करना

पहली स्क्रिप्ट में, हम इसका उपयोग करते हैं git reset --hard HEAD~1 शाखा से नवीनतम प्रतिबद्धता को हटाने का आदेश। यह कमांड वर्तमान शाखा को नवीनतम से ठीक पहले कमिट में रीसेट करता है, इसे इतिहास से प्रभावी ढंग से हटा देता है। कार्यशील निर्देशिका और सूचकांक में सभी परिवर्तन खारिज कर दिए जाते हैं। यह विधि तब उपयोगी होती है जब आपको अंतिम कमिट को शीघ्रता से हटाने की आवश्यकता होती है और उस कमिट में कोई बदलाव रखने की आवश्यकता नहीं होती है। हालाँकि, यह ध्यान रखना महत्वपूर्ण है कि यह आदेश परिवर्तनों को स्थायी रूप से हटा देगा, और उन्हें आसानी से पुनर्प्राप्त नहीं किया जा सकता है। आदेश git push origin branch-name --force फिर इसका उपयोग दूरस्थ रिपॉजिटरी में परिवर्तनों को बाध्य करने के लिए किया जाता है, दूरस्थ शाखा को स्थानीय शाखा के साथ अधिलेखित किया जाता है।

दूसरी स्क्रिप्ट का उपयोग करता है git rebase -i HEAD~N एक इंटरैक्टिव रीबेस सत्र शुरू करने के लिए आदेश। यह सत्र आपको अंतिम एन कमिट की समीक्षा और संशोधन करने की अनुमति देता है। इस सत्र के दौरान, आप इसका उपयोग कर सकते हैं drop इतिहास से किसी विशिष्ट प्रतिबद्धता को हटाने का आदेश। वैकल्पिक रूप से, edit किसी विशिष्ट प्रतिबद्धता को संशोधित करने के लिए कमांड का उपयोग किया जा सकता है। एक बार परिवर्तन किए जाने के बाद, git commit --amend --no-edit कमांड अपने संदेश को बदले बिना पिछली प्रतिबद्धता में संशोधन करता है। अंततः git rebase --continue सभी आवश्यक परिवर्तन या विरोध समाधान किए जाने के बाद कमांड रिबेस प्रक्रिया जारी रखता है। यह दृष्टिकोण अधिक लचीला है और कमिट इतिहास पर सटीक नियंत्रण की अनुमति देता है, जो इसे अधिक जटिल परिदृश्यों के लिए आदर्श बनाता है जहां आपको अन्य परिवर्तनों को खोए बिना विशिष्ट कमिट को हटाने या संपादित करने की आवश्यकता होती है।

Git कमांड का उपयोग करके Git शाखा से एक कमिट हटाना

Git कमांड लाइन का उपयोग करना

# To delete the most recent commit from the branch
git reset --hard HEAD~1

# To delete a specific commit from the branch history
git rebase -i HEAD~N
# Replace N with the number of commits to review
# In the text editor, replace 'pick' with 'drop' for the commit to delete

# To force push the changes to the remote repository
git push origin branch-name --force
# Replace 'branch-name' with your actual branch name

Git में कमिट इतिहास को फिर से लिखना

Git इंटरएक्टिव रिबेस का उपयोग करना

# Start an interactive rebase session to modify the last N commits
git rebase -i HEAD~N
# Replace N with the number of recent commits to modify

# In the text editor that appears, change 'pick' to 'edit' for the commit you want to modify
# Save and close the editor

# Make necessary changes, then amend the commit
git commit --amend --no-edit
git rebase --continue
# Repeat as necessary for additional commits

गिट कमिट इतिहास के प्रबंधन के लिए व्यापक रणनीतियाँ

पहले चर्चा की गई विधियों के अलावा, Git में प्रतिबद्ध इतिहास के प्रबंधन के लिए एक और आवश्यक तकनीक है git revert आज्ञा। इस कमांड का उपयोग एक नई कमिट बनाने के लिए किया जाता है जो पिछली कमिट द्वारा किए गए परिवर्तनों को पूर्ववत करता है। भिन्न git reset या git rebase, git revert मौजूदा प्रतिबद्ध इतिहास में कोई बदलाव नहीं करता है, जिससे यह परिवर्तनों को पूर्ववत करने के लिए एक सुरक्षित विकल्प बन जाता है, खासकर साझा रिपॉजिटरी में। उदाहरण के लिए, यदि किसी कमिट ने बग पेश किया है, तो आप इसका उपयोग कर सकते हैं git revert [commit-hash] एक नई प्रतिबद्धता बनाने के लिए जो उन परिवर्तनों को हटा देती है। यह सुनिश्चित करता है कि इतिहास रैखिक और अक्षुण्ण बना रहे, जो सहयोग और परियोजना इतिहास की अखंडता को बनाए रखने के लिए महत्वपूर्ण है।

एक अन्य उन्नत तकनीक का उपयोग करना है git cherry-pick कमांड, जो आपको विशिष्ट प्रतिबद्धताओं से अपनी वर्तमान शाखा में परिवर्तन लागू करने की अनुमति देता है। यह विशेष रूप से तब उपयोगी हो सकता है जब आपको पूरी शाखा का विलय किए बिना किसी अन्य शाखा से विशिष्ट सुविधाएँ या सुधार लाने की आवश्यकता हो। आदेश git cherry-pick [commit-hash] निर्दिष्ट प्रतिबद्धता से परिवर्तन आपकी वर्तमान शाखा में लागू होंगे। यह विधि एक स्वच्छ और संगठित प्रतिबद्ध इतिहास को बनाए रखने में मदद करती है, क्योंकि आप अन्य शाखाओं से किसी भी अवांछित प्रतिबद्धता से बचते हुए, केवल आवश्यक परिवर्तनों को चुनिंदा रूप से लागू कर सकते हैं।

गिट कमिट इतिहास के प्रबंधन पर अक्सर पूछे जाने वाले प्रश्न

  1. के बीच क्या अंतर है git reset और git revert?
  2. git reset जबकि, HEAD पॉइंटर को घुमाकर कमिट इतिहास को बदल देता है git revert एक नई प्रतिबद्धता बनाता है जो मौजूदा इतिहास में बदलाव किए बिना पिछली प्रतिबद्धता के परिवर्तनों को पूर्ववत करता है।
  3. मुझे कब उपयोग करना चाहिए git rebase के बजाय git merge?
  4. git rebase दूसरी शाखा से परिवर्तनों को एकीकृत करके एक रैखिक प्रतिबद्ध इतिहास बनाने के लिए उपयोगी है git merge शाखाओं के इतिहास को सुरक्षित रखता है।
  5. मैं किसी साझा शाखा से किसी कमिट को सुरक्षित रूप से कैसे हटा सकता हूँ?
  6. उपयोग git revert एक नई प्रतिबद्धता बनाने के लिए जो अवांछित प्रतिबद्धता से परिवर्तनों को पूर्ववत करती है, यह सुनिश्चित करती है कि इतिहास बरकरार रहे और सहयोगात्मक कार्य बाधित न हो।
  7. का उद्देश्य क्या है git reflog आज्ञा?
  8. git reflog इसका उपयोग शाखाओं के शीर्ष और अन्य संदर्भों के अपडेट को रिकॉर्ड करने के लिए किया जाता है, जिससे आप उन कमिट्स को पुनर्प्राप्त कर सकते हैं जो अब शाखा या टैग संदर्भों के माध्यम से पहुंच योग्य नहीं हैं।
  9. मैं Git में एक प्रतिबद्ध संदेश कैसे संपादित कर सकता हूँ?
  10. उपयोग git commit --amend नवीनतम प्रतिबद्ध संदेश को संशोधित करने के लिए। पहले के कमिट के लिए, उपयोग करें git rebase -i एक इंटरैक्टिव रिबेस सत्र शुरू करने के लिए।
  11. क्या करता है --force विकल्प में करो git push?
  12. --force विकल्प दूरस्थ रिपॉजिटरी पर दबाव डालता है, दूरस्थ शाखा पर किसी भी परिवर्तन को अधिलेखित कर देता है जो स्थानीय शाखा में मौजूद नहीं है।
  13. क्या मैं पूर्ववत कर सकता हूँ? git rebase?
  14. हाँ, आप उपयोग कर सकते हैं git reflog पिछले HEAD संदर्भ को खोजने और फिर उपयोग करने के लिए git reset --hard [commit-hash] वांछित स्थिति में वापस लौटने के लिए।

गिट कमिट रिमूवल तकनीकों को पूरा करना

Git में कमिट प्रबंधित करना जटिल हो सकता है, लेकिन सही कमांड और रणनीतियों के साथ, आप अपने प्रोजेक्ट इतिहास को प्रभावी ढंग से नियंत्रित कर सकते हैं। क्या आपको नवीनतम कमिट को शीघ्रता से हटाने की आवश्यकता है git reset --hard HEAD~1, या चयनात्मक रूप से उपयोग करके कमिट को हटाएं और संपादित करें git rebase -i, Git हर परिदृश्य के लिए शक्तिशाली उपकरण प्रदान करता है। अपने प्रोजेक्ट इतिहास की अखंडता को बनाए रखने के लिए हमेशा सुनिश्चित करें कि आप प्रत्येक कमांड के निहितार्थ को समझते हैं, खासकर साझा रिपॉजिटरी के साथ काम करते समय।

गिट कमिट इतिहास के प्रबंधन पर अंतिम विचार

जैसे आदेशों में महारत हासिल करके git reset, git rebase, और git revert, आप अपने Git प्रतिबद्ध इतिहास पर सटीक नियंत्रण प्राप्त करते हैं। प्रत्येक विधि अलग-अलग उद्देश्यों को पूरा करती है, सरल पूर्ववत संचालन से लेकर जटिल इतिहास पुनर्लेखन तक। बेहतर सहयोग और परियोजना प्रबंधन की सुविधा के लिए अपने भंडार को साफ, व्यवस्थित और सटीक रखने के लिए इन उपकरणों का बुद्धिमानी से उपयोग करें।