Git रीसेट समझाया गया: नरम, मिश्रित और कठोर
git reset आपकी शाखा को किसी अन्य कमिट में ले जाता है। तीनों मोड केवल इस बात में भिन्न हैं कि वे आपकी फ़ाइलों के साथ क्या करते हैं। यहां बताया गया है कि प्रत्येक को क्या रखना है, किसका उपयोग करना है, और जब आप बहुत दूर रीसेट हो जाएं तो कैसे वापस आना है।
द्वारा लिखित Kodmora
GitTree के पीछे सॉफ्टवेयर हाउस
- पूर्ववत करें और पुनर्प्राप्त करें
- इतिहास कमिट करें
- कमिट
इस पेज पर
All three modes move the current branch to the commit you name. `--soft` keeps every change staged, `--mixed` (the default) keeps them in your working folder unstaged, and `--hard` discards them. To undo your last commit but keep the work, run git reset --soft HEAD~1. Use --hard only when you are sure, because it deletes uncommitted changes for good.
नरम, मिश्रित और कठोर में क्या अंतर है?
| मोड | शाखा चलती है | स्टेजिंग क्षेत्र | कार्यशील फ़ोल्डर | इसका उपयोग करें |
|---|---|---|---|---|
--soft | हाँ | रखा | रखा | पुनः करें कमिट: सब कुछ यथावत रहता है |
--mixed | हाँ | रीसेट करें | रखा | मंच को अस्थिर करें और जो कमिट करना है उसे पुनः चुनें |
--hard | हाँ | रीसेट करें | रीसेट करें | काम को फेंक दो |
Git आपके काम की तीन प्रतियां रखता है: कमिट हिस्ट्री, स्टेजिंग एरिया और वर्किंग फोल्डर। रीसेट हमेशा पहले चलता है। मोड यह तय करता है कि क्या यह अन्य दो को भी फिर से लिखता है।
मुझे गिट रीसेट --सॉफ्ट का उपयोग कब करना चाहिए?
प्रत्येक परिवर्तन को चरणबद्ध रखते हुए, दोबारा कमिट होने के लिए तैयार रखते हुए कमिटों को पूर्ववत करने के लिए इसका उपयोग करें। यह एक शाखा को एक कमिट में बदलने का सबसे तेज़ तरीका है:
# undo the last commit, keep the changes staged
git reset --soft HEAD~1
# squash everything since main into one commit
git reset --soft main
git commit -m "feat(search): quick open"मुझे गिट रीसेट --मिक्स्ड का उपयोग कब करना चाहिए?
यह डिफ़ॉल्ट है, इसलिए git reset का अर्थ है git reset --mixed। कमिट को पूर्ववत करने और कार्य को अलग-अलग तरीके से विभाजित करने, या फ़ाइलों को अस्थिर करने के लिए इसका उपयोग करें:
# undo the last two commits, keep the changes unstaged
git reset HEAD~2
# unstage one file (the branch does not move)
git reset src/search.tsस्टेजिंग को अस्थिर करने के लिए, git restore --staged src/search.ts वही कार्य करता है और अधिक स्पष्ट रूप से पढ़ता है।
मुझे गिट रीसेट --हार्ड का उपयोग कब करना चाहिए?
# drop the last commit and its changes
git reset --hard HEAD~1
# match the remote exactly
git fetch origin
git reset --hard origin/mainमैं किसी शाखा से कोई कमिट कैसे हटाऊं?
| स्थिति | आदेश |
|---|---|
| अंतिम कमिट, आगे नहीं बढ़ायी गयी | git reset --hard HEAD~1 |
| पुरानी कमिट, पुश नहीं किया गया | git rebase -i <sha>~1, फिर इसे drop चिह्नित करें |
| कमिट पहले ही आगे बढ़ा दी गई है | git revert <sha> |
| कमिट गलत शाखा में चला गया | इसे git cherry-pick करें, फिर पुरानी शाखा को रीसेट करें |
git revert इतिहास को अक्षुण्ण रखता है, इसलिए साझा शाखा पर यह एकमात्र सुरक्षित विकल्प है। किसी पुश की गई शाखा को रीसेट करने के लिए एक ज़ोरदार पुश की आवश्यकता होती है और यह आपके टीम के साथियों के क्लोन को तोड़ देता है। इंटरैक्टिव रीबेस और चेरी-पिक के पास अपने स्वयं के मार्गदर्शक हैं।
मैं गिट रीसेट को पूर्ववत कैसे करूँ?
रीसेट ने शाखा को स्थानांतरित कर दिया, और रीफ्लॉग को याद आया कि वह कहाँ थी:
git reflog
# 3e52f10 HEAD@{0}: reset: moving to HEAD~2
# 9b3c7d1 HEAD@{1}: commit: add search box
git reset --hard 9b3c7d1यह कमिटों को वापस लाता है, जिसमें --hard के बाद की कमिट भी शामिल हैं। वे फ़ाइलें जो चरणबद्ध थीं लेकिन कभी कमिट नहीं थीं, कभी-कभी git fsck --lost-found के साथ पाई जा सकती हैं। जो परिवर्तन कभी नहीं किए गए थे वे चले गए हैं। रीसेट, रीबेस या कमिट को पूर्ववत करें हर मामले को कवर करता है।
रीसेट, रिवर्ट और रिस्टोर के बीच क्या अंतर है?
| आदेश | यह क्या करता है | इतिहास फिर से लिखता है? |
|---|---|---|
git reset | शाखा को दूसरी कमिट में ले जाता है | हाँ |
git revert | एक कमिट जोड़ता है जो दूसरे को पूर्ववत कर देता है | नहीं |
git restore | फ़ाइलें बदलती हैं, शाखा कभी नहीं | नहीं |
GitTree में एक शाखा को कैसे रीसेट करें
कमिट चुनें
उस कमिट पर राइट-क्लिक करें जिस पर शाखा को वापस जाना चाहिए और रीसेट... टू दिस कमिट खोलें।
मोड चुनें
चुनें सॉफ्ट: सभी परिवर्तन चरणबद्ध रखें, मिश्रित: परिवर्तन रखें वर्किंग फोल्डर में या हार्ड: सभी परिवर्तन त्यागें...।
यदि आपको आवश्यकता हो तो पूर्ववत करें
GitTree आपके काम को पहले
refs/ogt/trashके अंतर्गत सहेजता है, इसलिए पूर्ववत करें हार्ड रीसेट के बाद भी इसे वापस ला सकता है।

विवरण के लिए रीसेट ए ब्रांच टू कमिट देखें, और सुरक्षित रिपॉजिटरी पर अभ्यास करने के लिए रीसेट मोड्स पाठ देखें।
अक्सर पूछे जाने वाले प्रश्न
HEAD~1 का क्या मतलब है?
वर्तमान से एक कदम पहले कमिट हों। HEAD~3 तीन कदम पीछे है। यदि आप किसी कमिट को सीधे नाम देना चाहते हैं तो git log --oneline हैश दिखाता है।
क्या git रीसेट कमिट को हटा देता है?
यह शाखा को उनसे दूर ले जाता है, इसलिए वे git log में दिखना बंद कर देते हैं। वे डिफ़ॉल्ट रूप से कम से कम 30 दिनों तक रीफ्लॉग में रहते हैं, फिर Git उन्हें हटा सकता है।
मैं अपनी पिछली कमिट को कैसे पूर्ववत करूँ लेकिन परिवर्तन कैसे रखूँ?
उन्हें स्टेज बनाए रखने के लिए git reset --soft HEAD~1 चलाएँ, या उन्हें अस्थिर रखने के लिए git reset HEAD~1 चलाएँ।
क्या गिट रीसेट-हार्ड सुरक्षित है?
यह कमिट कार्य के लिए सुरक्षित है, जिसे रीफ्लॉग वापस ला सकता है। यह बिना कमिट के कार्य के लिए सुरक्षित नहीं है, जिसे यह हटा देता है। यदि आप अनिश्चित हैं तो पहले छिपाएँ या कमिट करें।
क्या मैं उस शाखा को रीसेट कर सकता हूँ जो पहले ही पुश दी गई है?
केवल एक ज़ोरदार पुश के साथ, जो सभी के लिए शाखा को फिर से लिखता है। साझा शाखाओं पर, इसके बजाय git revert का उपयोग करें।
सूत्र
अन्य उत्पादों के बारे में दावों की जाँच उनके आधिकारिक पेजों के विरुद्ध 7 नवंबर 2026 पर की गई। कीमतें और सुविधाएँ बदलती हैं; विक्रेताओं के पृष्ठ सत्य का स्रोत हैं।
