AI कोडिंग एजेंट के किए बदलाव कैसे वापस लें (undo करें)
AI कोडिंग एजेंट के एडिट सुरक्षित तरीके से वापस लें: एक फ़ाइल रीस्टोर करें, बिना कमिट किए बदलाव हटाएँ या उसका कमिट revert करें, और अपना काम न खोएँ।
AI कोडिंग एजेंट के बदलाव वापस लेने के लिए पहले देखें कि क्या बदला, फिर उसके हिसाब से Git कमांड इस्तेमाल करें: एडिट की गई फ़ाइलों के लिए git restore, नई फ़ाइलों के लिए git clean और कमिट के लिए git revert। सबसे पहले git stash से एक सुरक्षा कॉपी बना लें। Claude Code का अपना /rewind भी कोड रीस्टोर कर सकता है, लेकिन वह हर बदलाव ट्रैक नहीं करता।
यह गाइड वहाँ से शुरू होती है जब आप काम हटाने का फ़ैसला कर चुके हों; यह फ़ैसला करने में AI के कोड बदलावों की समीक्षा मदद करती है। Mono दिखाता है कि क्या बदला, लेकिन उसे वापस नहीं लेता, इसलिए वहाँ भी यही कमांड काम आती हैं।
1. एजेंट को रोकें और देखें कि क्या बदला
सबसे पहले एजेंट को रोकें। Mono में एजेंट के काम करते समय भेजने वाला बटन रद्द करने वाले बटन में बदल जाता है। प्रोजेक्ट फ़ोल्डर में खुले टर्मिनल में यह चलाएँ:
git status
git log --oneline -5पहली कमांड बदली हुई, हटाई गई, स्टेज की गई और नई फ़ाइलें दिखाती है। दूसरी हाल के कमिट दिखाती है, जिनमें एजेंट के किए कमिट भी शामिल हैं। नोट करें कि कौन-से बदलाव आपके हैं: बदलाव वापस लेने वाली कमांड नहीं जानतीं कि कोई पंक्ति किसने लिखी।
| आपको क्या दिखता है | उसे कैसे वापस लें |
|---|---|
| बदली या हटाई गई फ़ाइल, स्टेज नहीं | git restore <path> |
| स्टेज किया गया बदलाव | git restore --staged <path>, फिर फ़ाइल का बदलाव वापस लें |
| नई, अनट्रैक्ड फ़ाइल | git clean -n <path>, फिर git clean -f <path> |
| ऐसा कमिट जो आप नहीं चाहते थे | git revert <commit> |
Mono में “बदलाव दिखाएं” आख़िरी कमिट के बाद बदली और नई फ़ाइलें दिखाता है, इसलिए एजेंट का किया कमिट उसमें नहीं दिखेगा।
2. पहले सुरक्षा कॉपी बनाएँ
restore और clean कमांड बिना कमिट किए काम को हमेशा के लिए हटा देती हैं, इसलिए पहले सब कुछ सेव करें:
git stash push --include-untracked -m "before undo"
git stash apply --indexपहली कमांड आपकी बदली और नई फ़ाइलें सेव करके वर्किंग ट्री साफ़ कर देती है; दूसरी उन्हें वापस रख देती है, और जो स्टेज था वह स्टेज ही रहता है। कुछ भी अलग नहीं दिखता, लेकिन अब git stash list में “before undo” नाम की एक कॉपी है।
अगर आप ज़रूरत से ज़्यादा हटा दें, तो git restore --source "stash@{0}" <path> सबसे नए stash से किसी एडिट की गई फ़ाइल को वापस ले आता है।
3. एक फ़ाइल या उसका एक हिस्सा वापस लें
सबसे सीमित असर वाली कमांड चुनें:
git restore <path>उस फ़ाइल के बिना स्टेज किए एडिट हटा देता है।git restore --staged <path>बदलाव को अनस्टेज करता है, लेकिन फ़ाइल में एडिट बना रहता है।git restore -p <path>हर बदले हुए हिस्से (hunk) के बारे में अलग-अलग पूछता है। यह तब काम आता है जब आपने और एजेंट ने एक ही फ़ाइल एडिट की हो।git clean -n <path>उन अनट्रैक्ड फ़ाइलों की सूची देता है जिन्हेंgit clean -f <path>हटाएगा। हमेशा पाथ दें।
git restore दस्तावेज़ हर विकल्प समझाता है।
4. एजेंट के वे सभी बदलाव वापस लें जो कमिट नहीं हुए
अगर इनमें से कोई भी बदलाव आपका नहीं है, तो प्रोजेक्ट रूट से git restore --staged --worktree . चलाकर सब हटा दें, फिर नई फ़ाइलों के लिए git clean -n . और git clean -f . चलाएँ। वरना पाथ के हिसाब से काम करें।
एक काल्पनिक उदाहरण: आपने एजेंट से “tidy-recipes” प्रोजेक्ट में CSS क्लास .btn-primary का नाम बदलकर .button-main करने को कहा। इससे पहले वह lockfile का एक ऐसा अपडेट कमिट कर चुका है जो किसी ने नहीं माँगा था। इस बार उसने 3 फ़ाइलों में क्लास बदली, 12 असंबंधित फ़ाइलों की फ़ॉर्मैटिंग बदल दी और styles/tokens.css बना दी। इस बीच आपने README.md को हाथ से एडिट किया, और वह बदलाव आप रखना चाहते हैं।
सुरक्षा कॉपी के बाद एजेंट की फ़ाइलें रीस्टोर करें (यहाँ src/ और styles/main.css) और उसकी बनाई नई फ़ाइल हटाएँ:
git restore src/ styles/main.css
git clean -n styles/tokens.css
git clean -f styles/tokens.cssयहाँ git restore . इस्तेमाल न करें: इससे README में किया आपका एडिट भी हट जाएगा। अगर src/ के अंदर आपके भी एडिट हों, तो एजेंट की फ़ाइलों के नाम एक-एक करके दें।
अब git status में सिर्फ़ README.md दिखती है, और git diff सिर्फ़ आपकी पंक्तियाँ दिखाता है। lockfile वाला कमिट अब भी मौजूद है।
5. एजेंट का पहले से किया कमिट वापस लें
git revert एक नया कमिट दर्ज करता है जो किसी पिछले कमिट को उलट देता है। git revert दस्तावेज़ के अनुसार इसके लिए साफ़ वर्किंग ट्री चाहिए, इसलिए पहले README का अपना एडिट अलग रख दें:
git stash push -m "readme" README.md
git revert <lockfile commit>
git stash popgit log से मिला hash इस्तेमाल करें, और मैसेज एडिटर खुलने से बचने के लिए --no-edit जोड़ें। git stash pop “readme” को वापस लाता है और “before undo” को सूची में रहने देता है। अब git status में सिर्फ़ README.md दिखती है, और git log --oneline में सबसे ऊपर Revert "Update lockfile" दिखता है।
पुश हो चुके कमिट के लिए git reset के बजाय revert चुनें, क्योंकि reset वह इतिहास दोबारा लिख देता है जो दूसरों के पास पहले से हो सकता है। अगर reset या rebase के बाद कोई कमिट खोया हुआ लगे, तो git reflog उन कमिट की सूची उनके hash के साथ देता है जिन पर आप हाल में रहे हैं।
6. एजेंट के चेकपॉइंट इस्तेमाल करें, Git को बैकअप रखें
Claude Code हर प्रॉम्प्ट से पहले एक चेकपॉइंट सेव करता है: कोड, बातचीत या दोनों रीस्टोर करने के लिए /rewind चलाएँ, या खाली प्रॉम्प्ट पर Esc दो बार दबाएँ। उसके चेकपॉइंटिंग दस्तावेज़ इसकी सीमाएँ बताते हैं: शेल कमांड से हुए बदलाव ट्रैक नहीं होते, बाहर से किए गए एडिट आम तौर पर दर्ज नहीं होते, और चेकपॉइंट वर्शन कंट्रोल की जगह नहीं लेते। यह सुविधा मिलेगी या नहीं, यह इस पर भी निर्भर है कि आप एजेंट किस ऐप में चलाते हैं।
इसलिए Git को अपना भरोसेमंद सहारा बनाएँ:
- हर काम से पहले कमिट करें या ब्रांच बनाएँ, ताकि “आख़िरी कमिट” का मतलब “एजेंट से पहले” हो।
- एजेंट से कहें कि बिना पूछे कमिट न करे, उदाहरण के लिए अपनी AGENTS.md फ़ाइल में लिखकर।
- मंज़ूरी चालू रखें। Mono का YOLO मोड, जो एजेंट का हर अनुरोध मान लेता है, डिफ़ॉल्ट रूप से बंद रहता है। देखें कि अनुमति देने से पहले क्या जाँचें।
Mono में प्रोजेक्ट के कार्ड से आप अपने कंप्यूटर पर प्रोजेक्ट फ़ोल्डर में टर्मिनल खोल सकते हैं, फ़ोन से भी (रिमोट कोडिंग गाइड देखें)। Mono अभी उपलब्ध नहीं है, लेकिन आप प्रतीक्षा सूची में जुड़ सकते हैं।
