Skip to content

चेकपॉइंट्स (Checkpoints): सुरक्षा जाल जिसे आप किसी भी समय वापस ला सकते हैं (Rewind)

📚 सीरीज़ नेविगेशन: पिछले लेख 36 स्लैश कमांड / Slash Commands में / से शुरू होने वाले कमांड्स की लंबी सूची को व्यवस्थित किया गया था, और /rewind ने भी वहां अपनी उपस्थिति दर्ज कराई थी। यह लेख विशेष रूप से इसे तोड़ेगा (break down) — चेकपॉइंट (Checkpoint) वह 'संपादित करने से पहले का स्नैपशॉट (pre-edit snapshot)' है जिसे Claude Code स्वचालित रूप से (automatically) आपके लिए सहेजता है, जिससे आप किसी भी समय किसी पिछली स्थिति में वापस (rewind) आ सकते हैं। यह स्वचालित रूप से कैसे रिकॉर्ड करता है, इसे कैसे वापस (rewind) करना है, क्या वापस लाया जा सकता है और क्या नहीं, और git के साथ श्रम का विभाजन (division of labor) वास्तव में क्या है, एक लेख में सब कुछ स्पष्ट किया जाएगा।

लोग कहते हैं कि चेकपॉइंट आपकी 'पछतावे की दवा (regret medicine)' है, जिसके समर्थन से आप अपनी पूरी ताकत से Claude को काम करने दे सकते हैं—ईमानदारी से कहें तो, यदि आप इसे git की तरह इस्तेमाल करते हैं, तो जल्द ही या बाद में आप एक आपदा का सामना करेंगे।

कल्पना करें कि कोई ऐसा व्यक्ति जिसने अभी-अभी Claude Code का उपयोग करना शुरू किया है, /rewind जैसी किसी चीज़ के बारे में सुनता है, आराम महसूस करता है, और Claude को एक ही सांस में एक दर्जन फाइलों को बदलने देता है, इस बीच डायरेक्टरी को साफ़ करने के लिए कुछ rm और mv कमांड भी चलाता है। संशोधन के तीसरे दौर (round) में उन्हें एहसास होता है कि दिशा गलत है, और शांति से वापस कूदने के लिए /rewind का उपयोग करना चाहते हैं — परिणाम यह होता है कि कुछ कोड तो वापस आ जाते हैं, लेकिन rm द्वारा हटाई गई उन फाइलों में से एक भी वापस नहीं आती। वे मौके पर ही भ्रमित (confused) हो जाते हैं: "क्या यह पूर्ववत (undo) करने में सक्षम नहीं होना चाहिए था?"

यह पूर्ववत (undo) कर सकता है, लेकिन जो यह पूर्ववत करता है वह वे फाइलें हैं जिन्हें Claude ने अपने एडिटिंग टूल्स (editing tools) से बदला है, न कि वे निशान जो उसने आपकी डिस्क पर bash कमांड चलाकर छोड़े हैं, और निश्चित रूप से git जैसी स्थायी हिस्ट्री (permanent history) नहीं है। चेकपॉइंट एक "सेशन-स्तरीय स्थानीय पूर्ववत (session-level local undo)" है, जो तेज़ है, स्वचालित है, और बातचीत को वापस भी कर सकता है; लेकिन इसकी स्पष्ट सीमाएँ (boundaries) हैं, और यह उन चीज़ों को नहीं संभाल सकता जो इसके अधिकार क्षेत्र (jurisdiction) से बाहर हैं।

यह लेख केवल दो काम करेगा: पहला, चेकपॉइंट्स के इस "ऑटो-सेव + रिवाइंड" को इस हद तक समझाना कि आप इसे आँखें बंद करके भी ऑपरेट (operate) कर सकें; दूसरा, इसकी सीमाओं (boundaries) को तय करना — क्या वापस लाया जा सकता है, क्या वापस नहीं लाया जा सकता है, आपको इस पर कब भरोसा करना चाहिए, और आपको git का उपयोग कब करना चाहिए। सीमाओं को स्पष्ट रूप से समझने पर ही, यह एक सच्चा सुरक्षा जाल (safety net) बनता है, अन्यथा यह एक ऐसा सुरक्षा जाल है जो आपको धोखा देगा।

इस लेख को पढ़ने के बाद, आपको मिलेगा:

  • एक वाक्य में स्पष्टीकरण कि चेकपॉइंट क्या है और यह कब स्वचालित रूप से आपके लिए इसे सहेजता है (आपको कोई मैन्युअल ऑपरेशन करने की आवश्यकता नहीं है)
  • खोलने के दो तरीके: /rewind और "खाली इनपुट बॉक्स (empty input box) पर डबल-क्लिक Esc", और रिवाइंड मेनू (rewind menu) में उन विकल्पों का क्या मतलब है
  • एक "वापस लाया जा सकता है बनाम वापस नहीं लाया जा सकता है" तुलना तालिका — कोड और बातचीत वापस लाई जा सकती है, लेकिन bash साइड इफेक्ट्स (side effects) और बाहरी स्थितियां (external states) वापस नहीं लाई जा सकती हैं
  • चेकपॉइंट्स और git के बीच स्पष्ट कार्य विभाजन (clear division of labor): कब किसका उपयोग करना है, और आप एक को दूसरे से क्यों नहीं बदल सकते
  • एक व्यावहारिक उदाहरण जिसका आप अनुसरण कर सकते हैं, अपेक्षित आउटपुट (expected output) के साथ: व्यक्तिगत रूप से एक "त्रुटि (mistake)" बनाएं और फिर उसे वापस (rewind) करें

01 चेकपॉइंट क्या है: हर बार जब आप बात करते हैं, तो यह गुप्त रूप से एक स्नैपशॉट (snapshot) लेता है

आइए पहले निष्कर्ष दें: चेकपॉइंट 'संपादित करने से पहले का स्नैपशॉट (pre-edit snapshot)' है जिसे Claude Code स्वचालित रूप से (automatically) आपके कोड के लिए लेता है — हर बार जब आप कोई प्रॉम्प्ट भेजते हैं, तो यह एक स्नैपशॉट लेता है; बाद में, यदि आप किसी विशिष्ट (specific) में वापस जाना चाहते हैं, तो एक /rewind कमांड आपको वहां वापस ले जाता है।

आपने इसे लेख 07 में पहले ही देखा होगा, यह जानकर कि यदि आप कोई गलती करते हैं तो आप बैकअप के लिए /rewind का उपयोग कर सकते हैं। यह लेख और गहराई में जाता है। पहले याद करें कि आप Claude के साथ कैसे काम करते हैं: आप एक निर्देश (instruction) भेजते हैं → यह "सोचता है → करता है → देखता है" एक लूप में, कुछ फ़ाइलों को बदलता है → आप परिणाम देखते हैं और अगला निर्देश भेजते हैं (इस चक्र पर लेख 03 में चर्चा की गई थी)। चेकपॉइंट जो करता है वह यह है कि, आपके प्रत्येक निर्देश के लागू होने से पहले, यह उस समय की कोड स्थिति का एक स्नैपशॉट लेता है और उसे सेव (save) कर लेता है।

समानता (Analogy): वीडियो रिकॉर्डर (DVR) की टाइमलाइन पर प्लेबैक (playback)। आपके घर पर मौजूद सेट-टॉप बॉक्स (set-top box) जो प्लेबैक कर सकता है, वह प्रोग्राम को लगातार रिकॉर्ड करता है, लेकिन यह हर प्रोग्राम स्विच (program switch) पर एक "अध्याय मार्कर (chapter marker)" डालता है। यदि आप एक निश्चित भाग को दोबारा देखना चाहते हैं, तो आपको शुरुआत से फास्ट-फॉरवर्ड (fast-forward) करने की आवश्यकता नहीं है, बस अध्याय मार्कर (chapter marker) पर खींचें और वहां कूदने के लिए क्लिक करें। चेकपॉइंट उसी तरह है: प्रत्येक प्रॉम्प्ट जो आप भेजते हैं वह टाइमलाइन (timeline) पर एक अध्याय मार्कर है; /rewind पूरी टेप को वापस एक विशिष्ट (specific) मार्कर पर ले जाना है। एकमात्र अंतर यह है — वीडियो रिकॉर्डर प्लेबैक (playback) केवल "देखने (seeing)" के लिए है, जबकि चेकपॉइंट प्लेबैक वास्तव में कोड और बातचीत को उस क्षण (moment) में वापस ले जाता है, जिससे आपको एक अलग तरीके से फिर से रिकॉर्ड करने का मौका मिलता है।

आधिकारिक तौर पर (officially) इसे इस तरह परिभाषित (defined) किया गया है:

जब आप Claude के साथ काम करते हैं, तो checkpointing प्रत्येक संपादन (edit) से पहले कोड की स्थिति को स्वचालित रूप से (automatically) कैप्चर (capture) करता है। यह सुरक्षा जाल (safety net) आपको बड़े, महत्वाकांक्षी (ambitious) कार्यों को आत्मविश्वास के साथ करने की अनुमति देता है, यह जानकर कि आप हमेशा पिछली कोड स्थिति में वापस आ सकते हैं।

उस शब्द पर ध्यान दें — स्वचालित रूप से (automatically)। यह चेकपॉइंट्स के बारे में सबसे अच्छी बात है, और git के साथ सबसे बड़ा अनुभवजन्य अंतर (experiential difference) है: आपको कुछ भी करने की आवश्यकता नहीं है। git के साथ आपको git commit याद रखना होगा, यदि आप कमिट करना भूल जाते हैं तो इसे सेव नहीं किया जाता है; चेकपॉइंट के साथ, Claude इसे चुपचाप (silently) बैकग्राउंड में लेता है, और आपको इस बारे में चिंता करने की आवश्यकता नहीं है कि "क्या मैंने इसे सेव किया है?"

आधिकारिक दस्तावेज़ में सबसे विशिष्ट (typical) उपयोग मामलों (use cases) की चार श्रेणियां सूचीबद्ध (listed) हैं, और मैं प्रत्येक को एक वास्तविक दुनिया के परिदृश्य (real-world scenario) के साथ जोड़ूंगा जिसका आप सामना करेंगे:

  • विकल्पों (alternatives) की खोज: कार्यान्वयन (Implementation) A किया गया है और आप संतुष्ट नहीं हैं, इसलिए आप B योजना को फिर से शुरू करने के लिए शुरुआती बिंदु पर वापस आते हैं, शुरुआती बिंदु बरकरार है, इस डर के बिना कि "प्रयोग (experimenting) इसे तोड़ देगा और मैं वापस नहीं जा सकता।"
  • त्रुटियों (errors) से उबरना: इसके द्वारा एक फ़ाइल को बदलने के बाद, परीक्षण (test) विफल (fails) हो जाता है, और आप मैन्युअल रूप से लाइन दर लाइन वापस जाने के लिए बहुत आलसी हैं — पिछले चेकपॉइंट पर वापस (rewind) जाएं, एकदम साफ़ (clean)।
  • कार्यात्मकताओं (features) को दोहराना (Iterating): अभ्यास (practice) के रूप में Claude को पूरे मॉड्यूल (module) को फिर से लिखने दें, केवल यह पता लगाने के लिए कि यह मूल (original) जितना अच्छा नहीं है — फिर से लिखने से पहले वापस आएं, जैसे कि यह कभी हुआ ही न हो, आसानी से प्रयोग करने का साहस (daring to let go and try)
  • कॉन्टेक्स्ट स्पेस (context space) खाली करना: डिबगिंग (Debugging) के लिए एक लंबी बातचीत हुई है, आप पिछली सेटिंग निर्देशों को रखना चाहते हैं लेकिन मध्य (middle) में परीक्षण और त्रुटि (trial and error) को त्यागना (discard) चाहते हैं — यहीं पर "सारांश (summary)" काम आता है (खंड 03 में चर्चा की गई है)।

समझें कि इन चारों में क्या समानता है: वे सभी इस बारे में हैं "मैं साहसपूर्वक (boldly) आगे बढ़ना चाहता हूं, लेकिन मुझे डर है कि मैं इसे तोड़ दूंगा और वापस नहीं आ पाऊंगा" — चेकपॉइंट इस "डर (fear)" को दूर करने के लिए है।

💡 सारांश: चेकपॉइंट Claude का प्रत्येक संपादन (edit) से पहले लिया गया स्वचालित (automatic) कोड स्नैपशॉट है। आपके द्वारा भेजा गया प्रत्येक प्रॉम्प्ट एक "अध्याय मार्कर (chapter marker)" जोड़ता है, और बाद में केवल एक /rewind के साथ, आप कोड और बातचीत दोनों को उस क्षण (moment) में वापस ला सकते हैं — पूरी तरह से स्वचालित (fully automatic), मैन्युअल रूप से (manually) सहेजने की कोई आवश्यकता नहीं है


02 यह वास्तव में कब सहेजता है, यह कहाँ सहेजता है, और यह कब तक रहता है

चूंकि चेकपॉइंट "स्वचालित (automatic)" है, इसलिए आपको इसके स्वचालित पैटर्न (automatic patterns) को जानना होगा — यह कब स्नैपशॉट लेता है, यह क्या स्नैपशॉट लेता है, और यह कब तक रह सकता है। आधिकारिक दस्तावेज़ ने इन तीन बिंदुओं को बहुत स्पष्ट रूप से समझाया है, और मैं आपके लिए एक-एक करके उनकी समीक्षा (review) करूंगा।

ट्रिगर (Trigger) का समय: प्रति प्रॉम्प्ट (prompt) एक चेकपॉइंट

नियम केवल एक वाक्य है: हर बार जब आप एक प्रॉम्प्ट भेजते हैं, तो Claude Code एक नया चेकपॉइंट बनाता है। आधिकारिक शब्द:

प्रत्येक उपयोगकर्ता प्रॉम्प्ट एक नया checkpoint बनाता है।

इसलिए टाइमलाइन पर "अध्याय मार्करों (chapter markers)" का घनत्व (density) आपकी बात करने की गति का अनुसरण (follows) करता है — यदि आप दस निर्देश (instructions) भेजते हैं, तो वापस कूदने के लिए दस बिंदु होंगे। यह यह भी बताता है कि रिवाइंड मेनू (rewind menu) में बाद में सूचीबद्ध (listed) होने वाली चीज़ें बिल्कुल वही प्रॉम्प्ट हैं जो आपने इस सेशन में भेजे हैं: प्रत्येक प्रॉम्प्ट "कार्रवाई की शुरुआत (start of action)" भी है और एक "सहेजा गया बिंदु (saved point) भी है जिस पर वापस आया जा सकता है।"

इस लय (rhythm) को ड्रा करें, और आप एक नज़र में समझ जाएंगे कि चेकपॉइंट आपकी बातचीत के साथ "कैसे गिरते हैं":

चेकपॉइंट टाइमलाइन: प्रत्येक प्रॉम्प्ट से पहले स्वचालित रूप से सहेजा जाता है; यदि आप कोई त्रुटि करते हैं, तो किसी भी चेकपॉइंट पर वापस जाने (rewind) के लिए /rewind का उपयोग करें (कोड + बातचीत एक साथ वापस आती है)

यह चित्र यह दर्शाता है: हर बार जब आप एक प्रॉम्प्ट भेजते हैं, तो Claude कार्रवाई (action) करने से पहले एक चेकपॉइंट (नीला नोड) छोड़ देता है; जब आप प्रॉम्प्ट 3 में संशोधित (modify) करते हैं और पाते हैं कि आपने इसे गड़बड़ कर दिया है, तो आप उस बिंदीदार रेखा (dotted line) का अनुसरण करने के लिए एक /rewind का उपयोग कर सकते हैं और चेकपॉइंट 1 पर वापस आ सकते हैं, प्रॉम्प्ट 2 और 3 के परिवर्तनों को उनकी बातचीत के साथ पूर्ववत (undoing) कर सकते हैं — यही इसका "किसी भी समय वापस जाने (rewinding)" का सार (essence) है।

यह कहाँ सहेजा गया है: आपके ~/.claude में छिपा हुआ है

स्नैपशॉट (snapshots) मेमोरी (memory) में पतली हवा से बाहर नहीं रिकॉर्ड किए जाते हैं, वे डिस्क (disk) पर आते हैं। आधिकारिक दस्तावेज़ (claude-directory.md) विशेष रूप से इसका उल्लेख करता है:

file-history/<session>/ — checkpoint रिकवरी (recovery) के लिए Claude द्वारा परिवर्तित फ़ाइलों के संपादित करने से पहले के स्नैपशॉट।

इसका अर्थ है कि प्रत्येक सेशन का "संपादित करने से पहले का स्नैपशॉट" ~/.claude/file-history/<session>/ डायरेक्टरी में संग्रहीत (stored) किया जाता है। आपको इसे छूने की आवश्यकता नहीं है, लेकिन यह जानने के दो लाभ हैं कि यह कहाँ है: पहला, यह समझना कि चेकपॉइंट्स को वास्तविक फ़ाइलों द्वारा समर्थित (backed) किया जाता है, न कि जादू (magic); दूसरा, यदि आप कभी भी उत्सुक हैं कि आपकी मशीन पर Claude Code कितनी जगह ले रहा है, तो आप जानते हैं कि यह हिस्सा इसके नियंत्रण में है।

क्रॉस-सेशन (Cross-session): बंद करें और फिर से खोलें, सहेजे गए बिंदु अभी भी मौजूद हैं

चूंकि यह डिस्क पर उतरा है, इसलिए एक बहुत ही व्यावहारिक विशेषता (feature) है — चेकपॉइंट्स क्रॉस-सेशन (cross-session) खोते नहीं हैं। आधिकारिक शब्द:

Checkpoints सेशन के बीच लगातार (persist) रहते हैं, इसलिए आप उन्हें फिर से शुरू की गई (resumed) बातचीत में एक्सेस (access) कर सकते हैं।

इसका क्या मतलब है? आप आज अपना आधा काम खत्म करते हैं और बाहर निकलने (exit) के लिए Ctrl+D दबाते हैं, कल आप इस सेशन को जारी रखने (continue) के लिए claude --resume (या --continue) का उपयोग करते हैं, वे पिछले चेकपॉइंट्स अभी भी वहां हैं, और आप अभी भी /rewind का उपयोग करके कल के किसी बिंदु पर वापस आ सकते हैं। यह सोचना आसान है कि /rewind केवल वर्तमान में खुली विंडो में मान्य (valid) है, और बंद होने पर शून्य (zero) हो जाता है — लेकिन वास्तव में, जब आप तीन दिन पहले का सेशन फिर से शुरू (resume) करते हैं, तो वे पुराने प्रॉम्प्ट रिवाइंड मेनू (rewind menu) में अभी भी कूद सकते हैं, यह वास्तव में डिस्क पर संग्रहीत (stored) है और सेशन का अनुसरण (follows) करता है। तो, "सहेजने (saving)" के मामले में, यह "बंद करने और पुनः आरंभ करने (shutting down and restarting)" की बाधा (hurdle) का भी सामना कर सकता है, यह केवल cleanupPeriodDays सीमा (limit) के अधीन है।

यह कब तक रहता है: डिफ़ॉल्ट रूप से 30 दिन, समायोज्य (adjustable)

चेकपॉइंट हमेशा के लिए नहीं रखे जाएंगे, अधिकारियों ने एक स्वचालित क्लीनअप (automatic cleanup) सेट किया है:

30 दिनों के बाद स्वचालित रूप से (Automatically) साफ़ किया जाता है (कॉन्फ़िगर करने योग्य/configurable)।

यह "कॉन्फ़िगर करने योग्य (configurable)" वास्तव में कौन सा स्विच है? यह settings.json में cleanupPeriodDays है (उपयोगकर्ता-स्तर/प्रोजेक्ट-स्तर कॉन्फ़िगरेशन (user-level/project-level configurations) सेटिंग्स पर लेख 31 में विशेष रूप से चर्चा की गई है)। आधिकारिक settings.md कहता है कि यह डिफ़ॉल्ट रूप से निष्क्रिय (inactive) सेशन के रिकॉर्ड को साफ़ करने के लिए 30 दिन है, न्यूनतम 1 दिन है, और इसे 0 पर सेट करने से सीधे अस्वीकार (rejected) कर दिया जाएगा — यह मान चेकपॉइंट स्नैपशॉट (snapshots) के प्रतिधारण (retention) को भी नियंत्रित करता है। शुरुआती लोगों के लिए सलाह (Advice for beginners): इसे मत छुओ। डिफ़ॉल्ट मान (default value) पर्याप्त है। आपको जिस प्रगति (progress) को लंबे समय तक सहेजने की आवश्यकता है, उसे वैसे भी git (नीचे धारा 05 में विस्तार से बताया गया है) को सौंप दिया जाना चाहिए, बजाय इसके कि चेकपॉइंट इसे आधे साल तक आपके लिए सहेजने की उम्मीद (expect) करे।

यदि आप एक दिन स्पेस साफ़ करने के लिए ~/.claude के माध्यम से खंगालते हैं, और file-history डायरेक्टरी को नोटिस (notice) करते हैं, तो आपको एहसास होगा: पता चला है कि हर दिन /rewind "पछतावे की दवा (regret medicine)" के वे सभी ढेर शांति से (silently) यहाँ समर्थित (backed) हैं। आप आमतौर पर इसके अस्तित्व (existence) को महसूस भी नहीं करते हैं, जो वास्तव में "स्वचालित (automatic)" का लाभ (benefit) है।

इन तीन बिंदुओं को एक तालिका (table) में एक साथ लाएं:

आयाम (Dimension)नियम (Rule)आपको क्या करने की आवश्यकता है
कब सहेजना हैहर बार जब आप एक प्रॉम्प्ट भेजते हैं, तो स्वचालित रूप से (automatically) एक चेकपॉइंट बनाता हैकुछ नहीं करना है, बस सामान्य रूप से बात करें
कहाँ सहेजना है~/.claude/file-history/<session>/छूने की आवश्यकता नहीं है, बस जान लें कि यह कहाँ है
क्या यह क्रॉस-सेशन (cross-session) है?सेशन के दौरान लगातार (Persistent), बातचीत फिर से शुरू (resuming) करने के बाद भी इस्तेमाल किया जा सकता हैयदि आप इसे बंद करते हैं और फिर से खोलते हैं तो आप इसे वापस पा सकते हैं
कितने समय तक रहता हैडिफ़ॉल्ट रूप से cleanupPeriodDays के साथ साफ़ किया जाता हैइसे मत बदलो; दीर्घकालिक (long-term) प्रगति git को सौंपो

💡 सारांश: चेकपॉइंट प्रति प्रॉम्प्ट (per prompt) एक सहेजता है, जो ~/.claude/file-history/ में उतरता है, क्रॉस-सेशन (cross-session) नहीं खोता है, और डिफ़ॉल्ट रूप से cleanupPeriodDays के अनुसार साफ़ किया जाता है; आपको केवल इस नियम को जानने की आवश्यकता है, ऑपरेट (operate) करने की कोई आवश्यकता नहीं है — यह पूरी तरह से स्वचालित (fully automatic) है।


03 कैसे वापस लाएं (Rewind): /rewind، डबल-क्लिक Esc, और वह रिवाइंड मेनू (rewind menu)

यह जानते हुए कि यह चुपचाप (silently) बैकग्राउंड में सेव (save) हो रहा है, अब सीखें कि इसे कॉल (call) कैसे करें। प्रवेश द्वार केवल दो हैं, उन्हें अच्छी तरह याद रखें: /rewind कमांड, या खाली इनपुट बॉक्स (empty input box) पर डबल-क्लिक Esc।

दो प्रवेश द्वार (Two Entrances)

पहला, सेशन में स्लैश कमांड (slash command) टाइप करें:

text
/rewind

दूसरा, तेज़ है — जब इनपुट बॉक्स खाली हो, तो Esc को लगातार दो बार दबाएं:

text
(इनपुट बॉक्स खाली होने पर, Esc Esc को लगातार दबाएं)

ये दोनों एक ही रिवाइंड मेनू (rewind menu) को पॉप अप (pop up) करेंगे। आधिकारिक शब्द:

रिवाइंड मेनू खोलने के लिए /rewind चलाएं, या जब प्रॉम्प्ट इनपुट खाली हो तो दो बार Esc दबाएं।

यहाँ एक नुकसान (pitfall) है जिसे लेख 14 में पहले ही दफन (buried) कर दिया गया था, जिस पर फिर से जोर दिया जाना चाहिए:

यदि प्रॉम्प्ट इनपुट में टेक्स्ट है, तो डबल Esc मेनू खोलने के बजाय इसे साफ़ (clear) कर देगा। साफ़ किया गया टेक्स्ट आपके इनपुट इतिहास (history) में सहेजा जाएगा, इसलिए जब आप रिवाइंड मेनू के साथ समाप्त कर लें, तो आप इसे कॉल (call) करने के लिए Up दबा सकते हैं।

इसे सादे शब्दों में अनुवाद करने के लिए: जब इनपुट बॉक्स में टेक्स्ट होता है, तो डबल-क्लिक Esc "इस टेक्स्ट को साफ़ (clearing) कर रहा है," मेनू को नहीं खोल रहा है। यदि आप वापस (rewind) जाना चाहते हैं, तो पहले सुनिश्चित (make sure) करें कि इनपुट बॉक्स खाली है। शुरुआती लोग आसानी से यहाँ फँस सकते हैं — एक आधा वाक्य टाइप किया और पछतावा (regret) हुआ, पागलों (frantically) की तरह Esc दबाया, शब्द चले गए और मेनू प्रकट (appear) नहीं हुआ, भ्रमित (confused) लग रहे थे। याद रखें: पहले साफ़ करें, फिर Esc Esc। यदि आप अनिश्चित (unsure) हैं, तो ईमानदारी से /rewind टाइप करें, यह इस बारे में चयनात्मक (picky) नहीं है कि इनपुट बॉक्स खाली है या नहीं।

आप रिवाइंड मेनू (rewind menu) में क्या चुन रहे हैं

मेनू पॉप अप (pops up) होता है, और यह आपके द्वारा इस सेशन में भेजे गए प्रत्येक प्रॉम्प्ट को सूचीबद्ध (lists) करता है — जो कि टाइमलाइन (timeline) पर "अध्याय मार्करों (chapter markers)" की वह श्रृंखला (series) है। आप पहले एक "कूदने के लिए बिंदु (point to jump back to)" चुनें, और फिर चुनें "कैसे वापस आना है (how to rewind)।" यह दूसरा चरण महत्वपूर्ण (key) है क्योंकि वापस जाने के एक से अधिक तरीके हैं।

आधिकारिक अधिकारियों (officials) द्वारा दिए गए ऑपरेशन (operations) यहाँ दिए गए हैं, मैं उनका एक-एक करके अनुवाद करूँगा:

मेनू विकल्प (Menu Option)यह क्या करता है (What it does)इसे कब चुनना है (When to choose it)
कोड और बातचीत पुनर्स्थापित करें (Restore code and conversation)कोड और बातचीत एक साथ (together) उस बिंदु पर वापस आ जाते हैंपूरा राउंड (round) खरोंच (scratch) से शुरू होना चाहता है: जैसे कि वे कुछ वाक्य कभी नहीं हुए
बातचीत पुनर्स्थापित करें (Restore conversation)केवल बातचीत वापस आती है, कोड यथास्थिति (status quo) बनाए रखता हैसंशोधित (modified) कोड रखना चाहते हैं, लेकिन बातचीत भटक गई (strayed) और आप बातचीत को फिर से व्यवस्थित (reorganize) करना चाहते हैं
कोड पुनर्स्थापित करें (Restore code)केवल कोड परिवर्तन वापस आते हैं, बातचीत बनी रहती है (retained)कोड खराब हो गया था और वापस (rolled back) करने की आवश्यकता है, लेकिन आप अभी भी पूर्व चर्चाओं (prior discussions) का उपयोग करना चाहते हैं
यहाँ से सारांशित करें (Summarize from here)इस और बाद की बातचीत को सारांश (summary) में संपीड़ित (compress) करेंपिछली (earlier) पूर्ण विवरण (details) रखते हुए भटकती (straying) शाखा चर्चा (branch discussion) को काटें
यहाँ तक सारांशित करें (Summarize to here)इस से पहले की बातचीत को सारांश (summary) में संपीड़ित (compress) करेंलंबी (lengthy) प्रारंभिक प्रस्तावना (opening preamble) को संपीड़ित (compress) करें, हाल के काम के पूर्ण विवरण रखें
रहने दो (Never mind)कुछ नहीं, सूची पर लौटें (return to the list)गलती (mistake) से क्लिक किया / बस देखा और छोड़ दिया

मध्यम दो "केवल आधा वापस" विकल्प (options) अक्सर शुरुआती लोगों को आश्चर्यचकित (wonder) करते हैं कि "उन्हें अलग से क्यों वापस किया जाना चाहिए।" एक वास्तविक परिदृश्य (real scenario) दें और आप समझ जाएंगे:

  • केवल "कोड पुनर्स्थापित करें" (Restore code): आपने Claude के साथ पाँच राउंड के लिए आगे-पीछे बात की और अंततः (finally) एक योजना (plan) तय की, इसने उसी के अनुसार बदलाव किए, और परिणाम यह हुआ कि कोड चलना बंद (crashed) हो गया। आप इस खराब कोड को वापस करना चाहते हैं, लेकिन उन पाँच दौर की चर्चा के इन और आउट (ins and outs) को खोया नहीं जा सकता है (इसे फिर से समझाना बहुत थका देने वाला (tiring) है) — इस समय "कोड पुनर्स्थापित करें" चुनें, कोड परिवर्तन से पहले (before the change) वापस चला जाता है, बातचीत बरकरार (intact) रहती है, और इसे अपनी मूल समझ (original understanding) के साथ फिर से लिखने दें।
  • केवल "बातचीत पुनर्स्थापित करें" (Restore conversation): इसके विपरीत (conversely), आप इसके द्वारा बदले गए कोड से काफी संतुष्ट (satisfied) हैं और इसे रखना चाहते हैं, लेकिन यह दौर की बातचीत आपके द्वारा पूछे गए कुछ अप्रासंगिक (irrelevant) सवालों से भटक गई (strayed) है, और यह अधिक से अधिक अव्यवस्थित (messier) होती जा रही है — "बातचीत पुनर्स्थापित करें" चुनें, बातचीत को भटकने से पहले के बिंदु पर वापस करें, कोड यथास्थिति (status quo) में रहता है, और आप अपने विचारों को पुनर्गठित (reorganize) करते हैं और कमांड (command) देना जारी रखते हैं।

क्या आप देखते हैं? — "कोड पुनर्स्थापित करें / बातचीत पुनर्स्थापित करें (Restore code / Restore conversation)" आपको ठीक (finely) से ट्यून करने के लिए दो अलग-अलग नॉब (knobs) देते हैं, आपको "कोड और बातचीत" दोनों को एक साथ वापस नहीं करना है। यहाँ सबसे अधिक उपयोग (commonly used) किया जाने वाला वास्तव में "कोड पुनर्स्थापित करें (Restore code)" है: योजना ठीक है, यह सिर्फ Claude है जिसने इसे गलत तरीके से लिखा है, इसे फिर से लिखने देने के लिए कोड को वापस करना खरोंच (scratch) से आवश्यकताओं (requirements) का वर्णन (describing) करने की तुलना में बहुत आसान (easier) है।

और यहाँ सबसे आसानी से भ्रमित (confused) करने वाला हिस्सा यह है कि "पुनर्स्थापित करें (restore)" और "सारांशित करें (summarize)" मूल रूप से दो अलग-अलग चीजें हैं। यह मत सोचिए कि चूँकि वे एक ही मेनू (menu) में हैं, इसलिए वे एक ही तरह का काम करते हैं:

  • पुनर्स्थापित करें (restore) = वास्तव में स्थिति वापस लाएं (go back in state): कोड, बातचीत, या दोनों को चयनित बिंदु (selected point) पर वापस लाएं। यह "समय के साथ पीछे जाना (going back in time)" है।
  • सारांशित करें (summarize) = डिस्क (disk) पर फ़ाइलों को न छुएं (do not touch), बस बातचीत के एक पक्ष (one side) को AI-जनरेटेड (AI-generated) सारांश (summary) में संपीड़ित (compress) करें ताकि कॉन्टेक्स्ट स्पेस (context space) खाली हो सके। यह "डेस्क (desk) को साफ (tidying) करना" है, रिवाइंडिंग (rewinding) नहीं।

आधिकारिक दस्तावेज़ (official documentation) इस अंतर को बहुत स्पष्ट (straightforward) करता है:

पुनर्स्थापित (restore) विकल्प स्थिति को पुनर्स्थापित (restore state) करते हैं: वे कोड परिवर्तन (code changes), बातचीत इतिहास (conversation history), या दोनों को पूर्ववत (undo) करते हैं। सारांश (summarize) विकल्प बातचीत के एक हिस्से को डिस्क (disk) पर फ़ाइलों को बदले बिना AI-जनरेटेड सारांश (AI-generated summary) में संपीड़ित (compress) करते हैं।

क्या आप इसे देखते हैं? — "सारांशित करें (summarize)" वास्तव में लेख 19 के /compact का सटीक (exact) संस्करण (version) है/compact संपूर्ण बातचीत (entire conversation) को संपीड़ित (compresses) करता है, जबकि यहाँ "यहाँ से / यहाँ तक सारांशित करें (Summarize from here / to here)" आपको एक बिंदु (point) चुनने देता है और केवल एक पक्ष (one side) को संपीड़ित (compress) करता है: भटकी हुई (strayed) शाखा चर्चा (branch discussion) को काटने के लिए "यहाँ से सारांशित करें (Summarize from here)" का उपयोग करें, और लंबी (lengthy) प्रारंभिक (opening) प्रस्तावना (preamble) को समतल (flatten) करने के लिए "यहाँ तक सारांशित करें (Summarize to here)" का उपयोग करें। आधिकारिक (official) दस्तावेज़ इसकी तुलना इस प्रकार करता है:

यह /compact के समान है, लेकिन अधिक लक्षित (targeted) है: संपूर्ण बातचीत को सारांशित (summarizing) करने के बजाय, आप संपीड़ित (compress) करने के लिए चयनित (selected) संदेश के किस पक्ष (which side) को चुनते हैं।

एक और विचारशील (thoughtful) विवरण (detail) है: "बातचीत पुनर्स्थापित करें (Restore conversation)" या "यहाँ से सारांशित करें (Summarize from here)" चुनने के बाद, चयनित संदेश (selected message) का मूल (original) प्रॉम्प्ट स्वचालित रूप से (automatically) इनपुट बॉक्स में वापस भर (filled back) जाएगा, जिसे आप संशोधित (modify) कर सकते हैं और फिर से भेज (resend) सकते हैं — "यह वाक्य (sentence) कहने से पहले वापस जाने के बराबर है, जिससे आपको इसे फिर से कहने का मौका (chance) मिलता है।" ("यहाँ तक सारांशित करें (Summarize to here)" चुनना अलग है: यह आपको बातचीत (conversation) के अंत में (end) एक खाली इनपुट बॉक्स (empty input box) के साथ छोड़ देता है।)

शुरुआती (beginners) लोगों के लिए दो सामान्य (common) छोटी समस्याएँ (small issues)

"रिवाइंड मेनू (rewind menu) खाली है / चुनने के लिए कुछ बिंदु (few points) हैं" — सामान्य (Normal)। मेनू (menu) उन प्रॉम्प्ट्स को सूचीबद्ध (lists) करता है जो आपने इस सेशन में भेजे हैं, आपने अभी (just) शुरुआत (started) की है और केवल एक या दो (one or two) वाक्य भेजे हैं, स्वाभाविक (naturally) रूप से (few) कम बिंदु (points) वापस जाने (rewind) के लिए हैं। चेकपॉइंट (checkpoints) "जाते-जाते सहेजे (saved as you go)" जाते हैं, जितना अधिक आप भेजते हैं, उतने ही अधिक बिंदु (points) वापस जाने (rewind) के लिए उपलब्ध (available) होते हैं।

"मेरी उंगली (finger) फिसल (slipped) गई और मैंने गलत बिंदु (wrong point) चुन लिया, बहुत दूर (too far) चला गया, क्या मैं फिर (again) वापस आ सकता हूँ?" — पहले घबराएं (panic) नहीं। चेकपॉइंट (checkpoint) स्वयं क्रॉस-सेशन (cross-session) रहता है (remains) डिस्क (disk) पर (जैसा कि खंड (Section) 02 में उल्लेख (mentioned) किया गया है), और यह केवल इसलिए गायब (disappear) नहीं होगा क्योंकि आप एक बार /rewind करते हैं; मेनू (menu) में वे बिंदु (points) आमतौर पर (usually) अभी भी (still) होते हैं, आप रिवाइंड मेनू (rewind menu) फिर से (again) खोल सकते हैं और एडजस्ट (adjust) करने के लिए बाद का बिंदु (later point) चुन सकते हैं। हालाँकि (However), विशिष्ट (specific) मेनू (menu) व्यवहार (behavior) संस्करणों (versions) में भिन्न (vary) हो सकता है, सबसे सुरक्षित (safest) नियम (rule) अभी भी पुराना (old) है: उच्च-जोखिम (high-risk) वाले काम करने से पहले (Before), एक git commit पहले करें — git की "स्थायी इतिहास (permanent history)" हमेशा रक्षा (defense) की आपकी अंतिम पंक्ति (last line) होती है जब आपके पास वापस जाने (retreat) का कोई रास्ता (no way) नहीं होता है (अगले खंड (next section) में विस्तार (detail) से)।

💡 सारांश (Summary): वापस जाने (Rewinding) के लिए केवल दो प्रवेश द्वार (two entrances) हैं — /rewind या खाली इनपुट बॉक्स (empty input box) पर डबल-क्लिक Esc; इनपुट बॉक्स में शब्द (words) होने पर डबल-क्लिक Esc साफ़ (clears) कर देता है, यह मेनू (menu) नहीं खोलता है; मेनू में (In the menu), पहले चुनें "किस बिंदु (which point) पर वापस जाना है" और फिर "कैसे वापस जाना है (how to rewind)", "पुनर्स्थापित (restore)" वास्तव में (truly) स्थिति (state) को वापस कर रहा है / "सारांश (summarize)" केवल फ़ाइलों (files) को छुए (touching) बिना कॉन्टेक्स्ट (context) को संपीड़ित (compresses) कर रहा है, इन दोनों को भ्रमित (confuse) न करें; यदि आप बहुत दूर (too far) जाते हैं तो घबराएं नहीं (don't panic), वास्तविक बैकअप (real backup) एडवांस (advance) में git commit है


04 सीमाएँ (Boundaries) कहाँ हैं: क्या वापस लाया (rollback) जा सकता है, और क्या बिल्कुल वापस नहीं लाया जा सकता (deadly cannot come back)

यह अनुभाग (section) पूरे लेख (entire article) का जीवन-रक्त (lifeblood) है, और वह गड्ढा (pit) जिसमें शुरुआत (beginning) में कोई गिर गया था (fell into), वह यहीं (right here) है। चेकपॉइंट (Checkpoint) कोई सर्वशक्तिमान (omnipotent) पूर्ववत (undo) कुंजी (key) नहीं है, यह केवल एक प्रकार (one type) की चीज़ (thing) को देखता है — Claude द्वारा "फ़ाइल संपादन उपकरण (file editing tools)" का उपयोग (using) करके किए गए प्रत्यक्ष परिवर्तन (direct changes)। जो कुछ भी (Anything) इस रेखा (line) को पार (crosses) करता है, वह उसके नियंत्रण (control) से बाहर (out of) है।

समानता (Analogy) अभी भी (still) वही (same) वीडियो रिकॉर्डर (video recorder) है: यह केवल "स्क्रीन पर क्या है (what's on the screen)" रिकॉर्ड (records) करता है, यह "आपके लिविंग रूम (living room) में वास्तव में (really) क्या हुआ" रिकॉर्ड नहीं करता है। यदि आप वापस (rewind) जाते हैं, तो चित्र (picture) वापस आ जाता है, लेकिन वह कॉफी (coffee) जो आपने अभी (just) लिविंग रूम में गिराई (spilled) थी, वह पत्र (letter) जो आपने भेजा (sent) था, वह फ़ाइल (file) जो आपने हटा (deleted) दी थी — वास्तविक दुनिया (real world) में पहले ही (already) हो चुकी (happened) चीजें, वापस जाने (rewinding) से वापस (brought back) नहीं आ सकती हैं। चेकपॉइंट (Checkpoint) "कोड फ़ाइलों (code files) के स्नैपशॉट (snapshots)" लेता है, यह फ़ाइल (file) सामग्री (content) को आगे-पीछे (back and forth) प्रबंधित (manage) कर सकता है; लेकिन यह Claude द्वारा आपके सिस्टम (system) में कमांड (commands) चलाकर (running) की गई वास्तविक हलचल (real commotion) को प्रबंधित नहीं कर सकता (cannot manage)।

विशेष रूप से (Specifically) क्या वापस (come back) आ सकता है और क्या नहीं (cannot), अधिकारियों (officials) ने "सीमाओं (Limitations)" अनुभाग (section) में इसे बहुत स्पष्ट रूप से (clearly) सूचीबद्ध (listed) किया है, और मैंने इसे एक तुलना तालिका (comparison table) में संकलित (compiled) किया है — यह तालिका (table) आपको याद (memorize) रखनी चाहिए:

श्रेणी (Category)क्या यह वापस आ सकता है?क्यों (Why)
Claude द्वारा संपादन उपकरणों (editing tools) से बदली गई फ़ाइल सामग्री (File content)✅ आ सकता है (Can return)यही तो (exactly what) चेकपॉइंट (checkpoint) ट्रैक (tracks) करता है
बातचीत का इतिहास (Conversation history)✅ आ सकता है (Can return)रिवाइंड मेनू (Rewind menu) बातचीत (conversation) को अलग से (separately) / एक साथ (together) पुनर्स्थापित (restore) कर सकता है
Claude द्वारा bash कमांड (rm / mv / cp…) चलाकर (running) बदली गई फाइलें❌ वापस नहीं आ सकता (Cannot return)bash परिवर्तन (changes) ट्रैक नहीं किए (not tracked) जाते हैं
फ़ाइलें जिन्हें वर्तमान सेशन (current session) में संपादित नहीं (not edited) किया गया है❌ वापस नहीं आ सकता (Cannot return)केवल इस सेशन (session) में छुई गई (touched) फाइलों को ट्रैक (tracks) करता है
फ़ाइलें जिन्हें आपने Claude Code के बाहर (outside) मैन्युअल रूप से (manually) बदला (changed) है❌ वापस नहीं आ सकता (Cannot return)बाहरी परिवर्तन (External changes) कैप्चर नहीं किए जाते (not captured) हैं
अन्य समवर्ती सेशन (other concurrent sessions) द्वारा बदली गई चीज़ें❌ वापस नहीं आ सकता (Cannot return)वही (Same) बात, जब तक (unless) वे संयोग से (happen to) उसी फ़ाइल (same file) को स्पर्श (touch) न करें
पहले से भेजे गए (sent out) दुष्प्रभाव (side effects) (अनुरोध (requests) भेजना, डेटाबेस (database) पंक्तियों (rows) को हटाना, धकेलना (pushing)…)❌ वापस नहीं आ सकता (Cannot return)बाहरी स्थिति (External state), चेकपॉइंट (checkpoint) पूरी तरह (completely) से पहुँच (reach) से बाहर है

पहली दो "वापस नहीं आ सकती (cannot come back)" वस्तुएं (items) सबसे महत्वपूर्ण (most important) हैं जिन्हें दिमाग में (brain) उकेरा (engraved) जाना चाहिए, और अधिकारियों (officials) ने विशेष रूप से (specifically) उन्हें जोर देने (emphasize) के लिए निकाला है। पहले (First) bash कमांड आइटम (item) को देखें:

Checkpointing bash कमांड (commands) द्वारा संशोधित (modified) फाइलों (files) को ट्रैक नहीं करता (does not track) है। उदाहरण के लिए (For example), यदि Claude Code rm file.txt, mv old.txt new.txt, cp source.txt dest.txt चलाता है (runs)... तो इन फ़ाइल संशोधनों (file modifications) को रिवाइंड (rewinding) के माध्यम (through) से पूर्ववत नहीं (cannot be undone) किया जा सकता है। केवल Claude के फ़ाइल संपादन टूल (file editing tools) के माध्यम से किए गए प्रत्यक्ष फ़ाइल संपादन (direct file edits) ही ट्रैक (tracked) किए जाएंगे।

यही शुरुआत (beginning) में वह नुकसान (pitfall) है — Claude ने फ़ाइल (file) को हटाने (delete) के लिए rm का उपयोग (used) किया, संपादन टूल (editing tool) का नहीं, इसलिए /rewind इसे सहेज नहीं (cannot save) सकता। मुख्य बिंदु (Key point): "Claude द्वारा फाइलों (files) को बदलना (changing)" दो प्रकारों (two types) में विभाजित (divided) है — अपने संपादन टूल (editing tools) का उपयोग करके बदलना (बदलना (tracked), वापस किया जा सकता (can be rewound)), और bash कमांड (commands) का उपयोग करके बदलना (ट्रैक नहीं किया गया (untracked), वापस नहीं आ सकता (cannot come back))। आपकी नजर (eyes) में, वे दोनों (both) "इसने मेरी फाइल को छू लिया (touched my file)" हैं, लेकिन चेकपॉइंट (checkpoint) की नजर में, वे दुनिया (worlds) के अलावा (apart) हैं।

आप मौके (spot) पर (on the spot) कैसे बता (tell) सकते हैं कि यह कौन सा रास्ता (which path) ले (taking) रहा है? उस टूल कॉल नाम (tool call name) को देखें जो यह काम करते समय प्रिंट (prints) करता है (लेख (Article) 14 में उल्लेख (mentioned) किया गया है कि Ctrl+O विस्तृत प्रतिलेख (detailed transcript) का विस्तार (expand) कर सकता है):

  • यदि आप Edit, Write, MultiEdit और अन्य संपादन उपकरण (editing tools) देखते हैं — तो चेकपॉइंट (checkpoint) द्वारा ट्रैक (tracked) किया गया है, यदि यह खराब (messes) हो जाता है, तो /rewind इसे बचा (save) सकता है।
  • यदि आप Bash को rm, mv, cp, > (पुनर्निर्देशन अधिलेखन / redirection overwrite) और इसी तरह के अन्य कमांड चलाते हुए देखते हैं — तो ट्रैक नहीं किया जाता (not tracked), यदि यह खराब (messes) हो जाता है, तो /rewind इसे बचा (save) नहीं सकता है।

ये दोनों प्रतिलेख (transcript) में बहुत स्पष्ट (clearly) रूप से लिखे (written) गए हैं। "उच्च-जोखिम (high-risk) वाले काम करने (letting it do) पर टूल नाम (tool name) पर एक नज़र (glance) डालने" की आदत (habit) विकसित करें, और आप इसके वास्तव में (really) कार्य (acting) करने से पहले न्याय (judge) कर सकते हैं: यदि यह कदम (step) गड़बड़ (messes) हो जाता है, तो क्या मेरे पास अभी भी (still) /rewind की यह पछतावे की दवा (regret medicine) है। यदि निर्णय (judgment) "नहीं (no)" है, तो ईमानदारी से (honestly) पहले (first) git commit करें।

आइए "बाहरी परिवर्तन (External changes)" आइटम (item) को देखें:

Checkpointing केवल वर्तमान सेशन (current session) में संपादित (edited) फ़ाइलों को ट्रैक (tracks) करता है। आपके द्वारा Claude Code के बाहर (outside) किए गए मैन्युअल परिवर्तन (Manual changes) और अन्य समवर्ती सेशन (other concurrent sessions) के संपादन (edits) आमतौर पर (generally) कैप्चर नहीं (not captured) किए जाते हैं, जब तक कि (unless) वे संयोग से (happen to) उसी (same) फ़ाइल को संशोधित (modify) न करें जो वर्तमान सेशन (current session) में है।

इसका अर्थ है (Means): यदि आप इसे स्वयं (yourself) किसी अन्य एडिटर (other editor) से बदलते हैं, या इसे बदलने के लिए एक और (another) Claude Code सेशन (session) खोलते हैं, तो यह सेशन (session) का चेकपॉइंट (checkpoint) इसे पहचानता नहीं (not recognize) है।

पालन (follow) करने योग्य (worth) एक जमीनी नियम (ground rule) है: जब भी (Whenever) आप Claude को "फ़ाइलें हटाने (delete files), निर्देशिकाएँ स्थानांतरित (move directories), डेटाबेस बदलने (change databases), या अनुरोध भेजने (send requests)" जैसे अपरिवर्तनीय दुष्प्रभावों (irreversible side effects) वाले कार्य (tasks) करने देते हैं, तो बैकअप (backup) के लिए कभी भी (never) /rewind की उम्मीद न करें (expect) — पहले (first) git commit करें, पहले (first) बैक अप (back up) लें। चेकपॉइंट (Checkpoint) केवल (only) तभी एक विश्वसनीय (reliable) पछतावे की दवा (regret medicine) है जब "इसने अपने संपादन टूल (editing tools) से कोड को गड़बड़ (messed up) कर दिया हो"।

"शुरुआती (Beginners) लोग क्या सोचते हैं (think) कि यह क्या सहेज (save) सकता है" और "यह वास्तव में (actually) क्या सहेज सकता है (can save)" को एक साथ रखकर, शुरुआत (beginning) में वह काउंटर-सहज ज्ञान युक्त (counter-intuitive) बात मायने (makes sense) रखती है:

क्या गड़बड़ (messed) हुईशुरुआती (Beginners) सोचते हैं (think) कि /rewind सहेज सकता है (can save)वास्तव में (Actually)इसे सहेजने (save) का सही तरीका (real way)
Claude ने एडिटिंग टूल्स (editing tools) से कोड को खराब (messed up) कर दियासहेज सकता है (Can save)/rewind
Claude ने गलती (mistake) से rm का उपयोग (used) करके फाइलें हटा (deleted) दीं❌ सहेज नहीं सकता (Cannot save)पहले से (Advance) git commit / बैकअप (backup) लें
Claude ने एक स्क्रिप्ट (script) चलाई जिसने डेटाबेस (database) को लिखा (wrote) और डेटा (data) बदल (changed) दिया❌ सहेज नहीं सकता (Cannot save)डेटाबेस बैकअप (Database backup) / लेनदेन रोलबैक (transaction rollback)
Claude ने git push को ऊपर (up) धकेल (pushed) दिया❌ सहेज नहीं सकता (Cannot save)git स्तर (level) पर पूर्ववत (revert) करें (दूरस्थ (remote) बदल (changed) गया है)
आपने स्वयं (yourself) किसी अन्य एडिटर (other editor) के साथ फ़ाइल (file) को बदल (changed) दिया❌ पहचानता नहीं (Not recognize)आपका अपना (Your own) पूर्ववत (undo) / git

बीच (middle) में "❌" वाली पंक्तियाँ (rows), सभी शुरुआत (beginning) में उसी गड्ढे (pit) की विविधताएँ (variations) हैं — उनका सामान्य बिंदु (common point) यह है कि "परिवर्तन (changes) चेकपॉइंट्स (checkpoints) की दृष्टि रेखा (line of sight) से बाहर (outside) भाग गए (ran)": या तो (either) उन्होंने संपादन टूल (editing tools) के बजाय bash का मार्ग (path) अपनाया (took), या वे Claude Code के बाहर (outside) हुए, या उन्होंने बस (simply) परिवर्तनों (changes) को बाहरी सिस्टम (external system) में धकेल (pushed) दिया। जब तक (As long as) किसी कार्रवाई (action) के परिणाम (consequences) "डिस्क (disk) पर कोड फ़ाइलों (code files)" के बाहर (outside) आते हैं, चेकपॉइंट (checkpoint) उन तक पहुँच (reach) नहीं सकता। उस सीमा (limitations) तालिका (table) को याद रखने (memorizing) की तुलना (compared) में, इस एक वाक्य (sentence) को याद (memorizing) रखना मस्तिष्क (brain) को बचाता है।

💡 सारांश (Summary): चेकपॉइंट (Checkpoint) केवल (only) संपादन उपकरणों (editing tools) + बातचीत (conversation) द्वारा बदली गई (changed) फ़ाइलों (files) का प्रबंधन (manages) करता है, ये दोनों (these two) वापस आ (come back) सकते हैं; bash कमांड (commands) के दुष्प्रभाव (side effects) (rm/mv), बाहरी परिवर्तन (external changes), और भेजे गए अनुरोध (sent requests) वापस नहीं आ सकते (cannot come back) — न्याय करने (judge) के लिए एक वाक्य (sentence): यदि परिणाम (consequences) "कोड फ़ाइलों (code files)" के बाहर (outside) आते हैं, तो यह उन तक पहुँच (reach) नहीं सकता, /rewind का बीमा (insurance) के रूप में (as) उपयोग न करें (do not use)।


05 git के साथ श्रम का विभाजन (Division of labor): स्थानीय पूर्ववत (Local undo) बनाम स्थायी इतिहास (permanent history), कोई भी किसी को प्रतिस्थापित (replace) नहीं कर सकता

यहाँ (Here) तक (Speaking), शुरुआत (beginning) में वह वाक्य (sentence) "चेकपॉइंट्स (checkpoints) का git के रूप में (as) उपयोग (use) न करें" को पूरी तरह से (thoroughly) समझाया जा (can be explained) सकता है। बहुत से लोग (Many people) शुरू करते ही (as soon as they start) संघर्ष करते (struggle) हैं "अब जब (Now that) मेरे पास चेकपॉइंट (checkpoints) हैं, क्या मुझे अभी भी (still) git की आवश्यकता (need) है?" — उत्तर (Answer) है: हाँ (Yes), और वे बिल्कुल भी (not at all) एक-दूसरे की नौकरी (jobs) के लिए प्रतिस्पर्धा (compete) नहीं करते हैं।

अधिकारियों (Officials) ने एक वाक्य (sentence) में इस रिश्ते (relationship) को खत्म (nailed) कर दिया, जिसे आपके लिए (for you) फ्रेम (framed) करने लायक (worth) है:

Checkpoints को "स्थानीय पूर्ववत (local undo)" के रूप में (as) और Git को "स्थायी इतिहास (permanent history)" के रूप में (as) सोचें (Think)।

समानता (Analogy): स्क्रैचपैड (scratchpad) पर स्क्रिबलिंग (scribbling) बनाम सौंपे गए (handed in) और संग्रहीत (archived) आधिकारिक दस्तावेज़ (official documents)। चेकपॉइंट (Checkpoint) आपके द्वारा एक स्क्रैचपैड (scratchpad) पर लिखने (writing) और चित्र बनाने (drawing) जैसा है — यदि आप कोई गलती (mistake) करते हैं, तो आप उसे लापरवाही से (casually) मिटा (erase) सकते हैं और फिर से (rewrite) लिख सकते हैं, यह तेज़ (fast) है, आकस्मिक (casual) है, और केवल (only) आपके लिए अर्थपूर्ण (meaningful) है, और जब नोटबुक (notebook) का उपयोग (used up) हो जाएगा (30 दिनों के बाद (after 30 days)), तो इसे फेंक (thrown away) दिया जाएगा। git आपके द्वारा अंतिम मसौदे (final draft) को प्रिंट (printing) करने, उस पर हस्ताक्षर (signing) करने, और उसे फाइलिंग कैबिनेट (filing cabinet) में दाखिल (filing) करने जैसा है — यह एक निशान (trace) छोड़ता है, दूसरों (others) को दिखाया (shown) जा सकता है, किसी भी संस्करण (version) में वापस खोजा (traced back) जा सकता है, और स्थायी रूप से (permanently) सहेजा (saved) जा सकता है। आप आधिकारिक दस्तावेजों (official documents) को केवल (just) इसलिए संग्रहीत (archive) नहीं करेंगे क्योंकि स्क्रैचपैड (scratchpad) को मिटाया (erased) जा सकता है, न ही (nor) आप ड्राफ्टिंग (drafting) के लिए आधिकारिक दस्तावेजों (official documents) का उपयोग (use) करेंगे ताकि आप उन्हें आगे-पीछे (back and forth) बदल (change) सकें। आपको दोनों (both) की आवश्यकता (need) है, प्रत्येक (each) अपना (its own) काम (job) कर रहा है।

अधिकारियों (Officials) द्वारा दी गई श्रम के विभाजन (division of labor) की सूची (list):

  • कमिट (commits), शाखाओं (branches), और दीर्घकालिक इतिहास (long-term history) के लिए संस्करण नियंत्रण (version control) (उदा., Git) का उपयोग (Use) करना जारी (Continue) रखें;
  • Checkpoints उचित (proper) संस्करण नियंत्रण (version control) के पूरक (supplement) हैं लेकिन उसे प्रतिस्थापित (replace) नहीं करते हैं।

उन्हें साथ-साथ (side by side) रखें, और अंतर (differences) स्पष्ट (clear) हैं:

आयाम (Dimension)चेकपॉइंट (Checkpoint)Git
इसे कौन ट्रिगर (triggers) करता हैस्वचालित (Automatic) (प्रति प्रॉम्प्ट (per prompt))मैन्युअल (Manual) (आप git commit)
दानेदारता (Granularity)प्रति प्रॉम्प्ट (per prompt) एक (one), बहुत ठीक (very fine)प्रति कमिट (per commit) एक (one), आप तय (decide) करते हैं
क्या यह bash साइड इफेक्ट्स (side effects) का प्रबंधन (manage) करता है❌ नहीं करता (Doesn't)✅ कमिट (committed) की गई फ़ाइलें (files) पुनर्प्राप्त (recovered) की जा सकती हैं
कितने समय तक (How long) सहेजा (saved) गयाडिफ़ॉल्ट (Default) cleanupPeriodDays के साथ साफ़ (cleared) किया जाता हैस्थायी (Permanent) (जब तक (until) आप इतिहास (history) नहीं हटाते (delete))
क्या इसे साझा/सहयोग (shared/collaborated) किया जा सकता है❌ विशुद्ध (Purely) रूप से स्थानीय (local), केवल (only) आपके लिए✅ ऊपर (up) धकेला (pushed) गया, पूरी टीम (whole team) को दिखाई (visible) देता है
के लिए सबसे उपयुक्त (Best suited for)"यह कदम (step) खराब (messed) हो गया, वापस कूदो (jump back)" तत्काल पछतावा (instant regret)मील के पत्थर (Milestones), स्थायी इतिहास (permanent history), सहयोग (collaboration)

नोट (Note): git अभी भी (still) बाहरी (external) दुष्प्रभावों (side effects) जैसे कि भेजे गए (sent) अनुरोधों (requests), डेटाबेस (database) परिवर्तनों (changes), आदि को प्रबंधित (manage) नहीं कर सकता (cannot) है, यह केवल (only) आपको डिस्क (disk) पर कमिट (committed) फ़ाइलों (files) को पुनर्प्राप्त (recover) करने में मदद (help) कर सकता है।

कब किसका (Which one) उपयोग (use) करना है, मैं आपको एक नियम (rule) देता हूँ:

  • छोटे कदम (Small steps), तेज़ (fast), किसी भी समय (anytime) पछताना (regret) → चेकपॉइंट (Checkpoint)। यदि एक संस्करण (version) काम नहीं (doesn't) करता है, तो /rewind, और एक और (another) प्रयास (try) करें, आपको git को बिल्कुल (at all) छूने (touch) की आवश्यकता (need) नहीं है, यह रेशमी (silky) चिकना (smooth) है।
  • एक उचित (decent) चरण (stage) समाप्त (Finished), इसे लंबे समय (long term) तक सहेजना (save) चाहते हैंgit commit। एक सुविधा (feature) काम करती है (works), परीक्षण (tests) पास (pass) करती है, इसे कमिट (commit) करें, यह "स्थायी संग्रह (permanent archive)" है।
  • चाहते हैं (Want) कि bash दुष्प्रभाव (side effects) भी वापस (rollback) किए जा सकें → केवल (Only) git पर भरोसा (rely) कर सकते हैं। पिछले अनुभाग (Previous section) में कहा (said) गया था कि चेकपॉइंट (checkpoint) rm को प्रबंधित (manage) नहीं कर सकता (cannot), लेकिन जब तक (as long as) आप अक्सर (frequently) कमिट (commit) करते हैं, git पूरे कार्यक्षेत्र (workspace) की स्थिति (status) को पुनर्प्राप्त (recover) कर सकता है।

एक अधिक स्थिर (stable) लय (rhythm) इस प्रकार (like this) है: Claude को काम करने (work) देने की प्रक्रिया (process) में (in the), किसी भी समय (at any time) वापस (rewind) जाने और प्रयास (try) करने तथा त्रुटि (error) करने के लिए चेकपॉइंट्स (checkpoints) पर भरोसा (rely) करें; प्रत्येक पूर्ण किए गए (completed) छोटे चरण (small stage) के बाद (after) जो सफलतापूर्वक (successfully) चलता (runs) है, तुरंत (immediately) एक स्थायी (permanent) सेव पॉइंट (save point) को नेल (nail) करने के लिए git commit करें। ये दोनों (These two) मिलकर (together) "फाइन-ग्रेन्ड (fine-grained) कैज़ुअल (casual) अनडू (undo)" और "कोर्स-ग्रेन्ड (coarse-grained) परमानेंट (permanent) माइलस्टोन (milestones)" के डबल (double) इंश्योरेंस (insurance) के बराबर (equal) हैं। वास्तविक सबक (Real lesson) जो (that) काटेगा (will bite) वह (is) है: चेकपॉइंट्स (checkpoints) पर बहुत अधिक (too much) भरोसा (trusting) करना, पूरी दोपहर (whole afternoon) कमिट (commit) नहीं करना, और फिर (then) सेशन (session) क्रैश (crashes) हो जाता है और फिर से खुल (reopens) जाता है, हालांकि (although) कोड (code) फाइलें (files) अभी भी (still) मौजूद (there) हैं, उन "चैप्टर (chapter) मार्करों (markers)" की लंबी (long) स्ट्रिंग (string) सभी (all) टूट (broken) गई हैं — यदि आप तीन घंटे (three hours) पहले (ago) किसी (some) मध्यवर्ती (intermediate) स्थिति (state) में वापस (retreat) जाना चाहते हैं, तो आप अब और नहीं (anymore) कर सकते हैं। इसलिए (So), "काम करने (working) पर कमिट (committing)" की मांसपेशी (muscle) स्मृति (memory) को विकसित (develop) करना अधिक (more) महत्वपूर्ण (important) है।

इस बारे में (About) कि git Claude Code के साथ कैसे (how) सहयोग (cooperates) करता है (इसे कमिट (commit) संदेश (messages) लिखने (write) दें, शाखाओं (branches) का प्रबंधन (manage) करें), लेख (Article) 43 "Git वर्कफ़्लो (Workflow)" में एक विशेष (special) लेख (article) है, यहाँ (here) आपको (you) केवल (only) एक चीज़ (one thing) याद (remember) रखने (need) की आवश्यकता (need) है: चेकपॉइंट (checkpoint) एक स्थानीय (local) पूर्ववत (undo) है, git एक स्थायी (permanent) इतिहास (history) है, पूर्व (former) बाद (latter) के पूरक (supplements) हैं और इसे कभी भी (never) प्रतिस्थापित (replaces) नहीं करते हैं।

अंत में (Finally), एक उन्नत (advanced) कांटा (fork) जोड़ें (add), अधिकारियों (officials) ने एक वाक्य (sentence) का उल्लेख (mentioned) किया है: यदि आप एक अलग (different) विधि (method) का प्रयास (try) करना चाहते हैं और वर्तमान सेशन (current session) को अक्षुण्ण (intact) रखना (keep) चाहते हैं, तो "सारांशित (summarize)" (यह आपके वर्तमान सेशन (current session) के कॉन्टेक्स्ट (context) को बदल (change) देगा) का उपयोग (use) न करें, बल्कि (but) फोर्क (fork) का उपयोग (use) करें:

bash
claude --continue --fork-session

यह मूल (original) सेशन (session) को बरकरार (intact) रखते हुए, प्रयास (try) करने के लिए वर्तमान सेशन (current session) के आधार (based) पर एक नई (new) शाखा (branch) को विभाजित (fork) करेगा। आप पहले (first) जानते (know) हैं कि आपके पास यह चाल (trick) है, और जब (when) आप वास्तव में (really) "एक साथ (parallel) दो (two) विचारों (ideas) को आज़माना (try) चाहते हैं", तो लेख (Article) 34 के "जारी रखें / सेशन फिर से शुरू करें (Continue / Resume Session)" पर वापस जाएँ (go back)।

💡 सारांश (Summary): चेकपॉइंट (Checkpoint) = स्वचालित (Automatic) स्थानीय (local) पूर्ववत (undo) (ठीक (fine), तेज़ (fast), विशुद्ध (purely) रूप से स्थानीय (local), समाप्त (expire) हो जाएगा), git = मैन्युअल (Manual) स्थायी (permanent) इतिहास (history) (पता (traceable) लगाया जा सकता है, सहयोगी (collaborative), खोया नहीं (not lost)); छोटे कदम (small steps) और परीक्षण (trial) और त्रुटि (error) चेकपॉइंट्स (checkpoints) पर भरोसा (rely) करते हैं, मील के पत्थर (milestones) और दुष्प्रभाव (side effect) रोलबैक (rollbacks) git पर भरोसा (rely) करते हैं, और जब (when) एक चरण (stage) सुचारू (smoothly) रूप से चलता (runs) है, तो commit करें।


06 अभ्यास (Practice): व्यक्तिगत रूप से (Personally) एक "त्रुटि (mistake)" बनाएं (create), और फिर इसे वापस (rewind) करें

बिना अभ्यास (practice) के पढ़ना (Reading) आपको इसे याद (remember) रखने में मदद नहीं (will not help) करेगा। निम्नलिखित (The following) न्यूनतम (minimum) वर्कफ़्लो (workflow) आपको "Claude फ़ाइलों (files) को संशोधित (modifies) करता है → आपको पछतावा (regret) होता है → वापस (rewind) करने के लिए /rewind" के पूर्ण लूप (complete loop) के माध्यम से (through) ले जाएगा। यह किसी भी जटिल (complex) प्रोजेक्ट (project) पर निर्भर (rely) नहीं करता है, और इसे किसी भी खाली (empty) फ़ोल्डर (folder) में चलाया जा सकता (can be run) है। टर्मिनल (terminal) खोलें (Open) और अनुसरण (follow) करें।

चरण (Step) 1: एक टॉय (toy) फ़ोल्डर (folder) बनाएँ, एक फ़ाइल (file) रखें (put) जिसे एक नज़र (glance) में (at a) समझा (understood) जा सके

bash
mkdir ~/rewind-demo && cd ~/rewind-demo
git init
printf 'hello\n' > note.txt
git add note.txt && git commit -m "init: प्रारंभिक (initial) नोट (note)"

अपेक्षित (Expected): note.txt में केवल (only) एक पंक्ति (one line) hello है, और git ने एक कमिट (commit) (चेकपॉइंट (checkpoint) और git के बीच (between) अंतर (difference) की तुलना (compare) करने के लिए बाद में (later) उपयोगी (useful)) किया है।

चरण (Step) 2: Claude प्रारंभ (Start) करें, और इसे इस फ़ाइल (file) को बदलने (change) दें

bash
claude

प्रवेश (Entering) करने के बाद (After), पहला (first) निर्देश (instruction) भेजें (send) (यह प्रॉम्प्ट (prompt) पहले (first) चेकपॉइंट (checkpoint) को ट्रिगर (trigger) करेगा):

text
note.txt की सामग्री (content) को तीन पंक्तियों (three lines) में बदलें: सेब (apple), केला (banana), चेरी (cherry), बदलने के लिए संपादन टूल (editing tool) का उपयोग करें

अपेक्षित (Expected): Claude note.txt को संपादन टूल (editing tool) से तीन फलों (three fruits) में बदल देता है (डिफ़ॉल्ट (default) मोड (mode) में यह पहले (first) आपके अनुमोदन (approval) की प्रतीक्षा (wait) करने के लिए एक diff देगा, इसे अनुमोदित (approve) करें)। "संपादन उपकरण (editing tool) का उपयोग (using)" पर विशेष (Specifically) रूप से जोर देना (emphasizing) यह सुनिश्चित (ensure) करने के लिए है कि यह परिवर्तन (change) चेकपॉइंट्स (checkpoints) की ट्रैकिंग (tracking) सीमा (scope) के अंतर्गत (within) आता है — जो कि बिल्कुल (exactly) वही प्रकार (type) है जिसे /rewind सहेज (save) सकता है।

चरण (Step) 3: एक और (another) भेजें, इसे और अधिक (more) "पहचानने योग्य (unrecognizable)" बनाने (make) के लिए बदलें

text
इन तीन पंक्तियों (three lines) को पूरी तरह (completely) से हटा (delete) दें और उन्हें एक पंक्ति (one line) से बदल (replace) दें: यह वह (that) संस्करण (version) है जो मुझे (I) नहीं (don't) चाहिए (want)

अपेक्षित (Expected): note.txt में अब (now) केवल (only) "यह वह (that) संस्करण (version) है जो मुझे (I) नहीं (don't) चाहिए (want)" बचा (left) है। इस बिंदु (point) तक (Up to), आपने पहले ही (already) दो (two) प्रॉम्प्ट (prompts) भेज (sent) दिए हैं, और टाइमलाइन (timeline) पर दो (two) अध्याय (chapter) मार्कर (markers) हैं।

चरण (Step) 4: रिवाइंड मेनू (rewind menu) खोलें (Open), रिवाइंड (rewind) करें

सुनिश्चित (Ensure) करें कि इनपुट बॉक्स (input box) खाली (empty) है, और फिर (then) Esc को लगातार (consecutively) दो बार (twice) दबाएं (या बस (simply) /rewind टाइप (type) करें):

text
(इनपुट बॉक्स खाली है, Esc Esc)

अपेक्षित (Expected): रिवाइंड मेनू (rewind menu) पॉप अप (pops up) होता है, जो उन दो (two) प्रॉम्प्ट (prompts) को सूचीबद्ध (listing) करता है जो आपने अभी (just) भेजे (sent) हैं। पहले (first) प्रॉम्प्ट (prompt) से पहले (before) (तीन फलों (three fruits) में बदलने (changing) का समय) बिंदु (point) चुनें (Select), और फिर (then) "कोड और बातचीत पुनर्स्थापित (Restore code and conversation) करें" चुनें (select)।

चरण (Step) 5: सत्यापित (Verify) करें कि रिवाइंड (rewind) सफल (successful) रहा

टर्मिनल (terminal) पर लौटें (Return) (या सेशन (session) में चलाने (run) के लिए ! का उपयोग (use) करें), और फ़ाइल (file) पर एक नज़र (glance) डालें:

text
! cat note.txt

अपेक्षित (Expected): note.txt एक पंक्ति (one line) hello में वापस (back) बदल (changed) गया — आपके दोनों (Both) परिवर्तन (changes) पूर्ववत (undone) कर दिए गए थे, कोड (code) और बातचीत (conversation) दोनों (both) बदलने (changing) से पहले (before) की स्थिति (state) में वापस आ गए (returned)। hello को वापस (back) आते देखना (Seeing) = चेकपॉइंट (checkpoint) सफलतापूर्वक (successfully) रिवाइंड (rewound) हो गया। यही "स्थानीय पूर्ववत (local undo)" की शक्ति (power) है: आपने एक भी (single) git कमांड (command) टाइप (type) नहीं (did not) किया, केवल (purely) चेकपॉइंट्स (checkpoints) पर भरोसा (relying) करके दोनों (two) राउंड (rounds) के बदलावों (changes) को पूरी तरह (cleanly) से वापस (reversed) कर दिया।

चरण (Step) 6 (महत्वपूर्ण (Key) कंट्रास्ट (contrast)): सत्यापित (Verify) करें कि bash दुष्प्रभाव (side effects) वापस (back) नहीं (cannot) आ (come) सकते (can)

अब (Now) जानबूझकर (deliberately) फ़ाइल (file) को हटाने (delete) के लिए bash कमांड (command) का उपयोग (use) करने (use) दें, और अनुभाग (section) 04 में उस सीमा (boundary) का अनुभव (experience) करें। सेशन (session) में (In), भेजें (send):

text
note.txt को हटाने (delete) के लिए bash कमांड (command) (rm) का उपयोग (use) करें

इसके द्वारा इसे हटाने (deleting) के बाद (After), हटाने (deleting) से पहले (before) उस बिंदु (point) पर वापस (rewind) लौटने (return) का प्रयास (attempt) करने के लिए /rewind करें, और "कोड पुनर्स्थापित (Restore code) करें" चुनें (select)। फिर (Then) देखें (look):

text
! ls

अपेक्षित (Expected): note.txt वापस नहीं (did not) आया (come back), इसे ls में नहीं (cannot) पाया जा (be found) सकता है। यह इसकी पुष्टि (confirms) करता है — bash कमांड (commands) (rm) द्वारा बदली (changed) गई चीजें, चेकपॉइंट (checkpoint) ट्रैक (track) नहीं (cannot) कर (can) सकता, /rewind सहेज (save) नहीं (cannot) सकता (can)। इसे वापस (back) पाना (find) चाहते (Want) हैं? यह (This is) वह (when) समय (time) है जब (when) git को मंच (stage) लेने (take) की बारी (turn) आती है:

bash
git checkout note.txt

(यह कमांड (command) फ़ाइल (file) को पुनर्प्राप्त (recover) करने के लिए git में उस init कमिट (commit) का उपयोग (use) करेगा।) अपेक्षित (Expected): note.txt hello के साथ (with) वापस आ (came back) गया है — git, यह "स्थायी इतिहास (permanent history)", उस हिस्से (part) के लिए बना (made up) है जिस तक चेकपॉइंट (checkpoint) नहीं (could not) पहुँच (reach) सका (could)।

इन छह (six) चरणों (steps) को पूरा (completing) करने के बाद (After), आपने व्यक्तिगत रूप से (personally) इस लेख (article) में दो (two) मुख्य (core) चीजों को सत्यापित (verified) कर लिया है: चेकपॉइंट (checkpoint) संपादन उपकरण (editing tool) के परिवर्तनों (changes) को सुचारू (silky smoothly) रूप से (smoothly) वापस (rewind) कर (can) सकता है (चरण (step) 5), लेकिन bash दुष्प्रभावों (side effects) का प्रबंधन (manage) नहीं (cannot) कर (can) सकता — इसके लिए git (चरण (step) 6) पर भरोसा (rely) करना होगा। ये दो (These two) सकारात्मक (positive) और नकारात्मक (negative) परिणाम (results) सीमाओं (boundaries) को दस (ten) बार (times) समझाने (explaining) से (than) बेहतर (better) याद (remembered) रखे (are) जाते हैं।

💡 सारांश (Summary): अभ्यास (practice) का यह सेट (set) आपको (you) अपनी (own) आँखों (eyes) से (with) देखने (see) देता (lets) है — संपादन उपकरण (editing tool) द्वारा बदल (changed) दिया गया, एक-क्लिक (one-click) पीछे (back) /rewind; bash rm द्वारा हटा (deleted) दिया गया, चेकपॉइंट (checkpoint) शक्तिहीन (powerless) है, पुनः प्राप्त (retrieve) करने के लिए git checkout पर भरोसा (rely) करना चाहिए। एक सकारात्मक (positive) और एक नकारात्मक (negative), और सीमा (boundary) उकेरी (engraved) गई है।


07 सारांश (Summary)

इस लेख (article) ने Claude Code के "स्वचालित सुरक्षा जाल (automatic safety net)" को पूरी तरह से (completely) अलग (apart) कर (taken) दिया है — चेकपॉइंट (checkpoint) प्रत्येक (every) संपादन (edit) से पहले (before) लिया (taken) गया स्वचालित (automatic) कोड (code) स्नैपशॉट (snapshot) है, जिससे आप किसी भी (any) समय (time) वापस (rewind) आ (can) सकते हैं, लेकिन इसकी स्पष्ट सीमाएँ (clear boundaries) हैं, और यह git के साथ (with) भागीदार (partner) है, स्टैंड-इन (stand-in) नहीं (not)।

मुख्य (Core) बिंदुओं (points) को एक तालिका (table) में एक साथ (together) स्ट्रिंग (String) करें, और इसे अपनी जेब (pocket) में रखें (keep):

आप क्या समझना (understand) चाहते हैंनिष्कर्ष (Conclusion)मुख्य (Key) बिंदु (point)
चेकपॉइंट (Checkpoint) क्या हैप्रत्येक (Every) प्रॉम्प्ट (prompt) से पहले (before) स्वचालित (automatically) रूप से लिया (taken) गया कोड (code) स्नैपशॉट (snapshot)पूरी तरह (Fully) स्वचालित (automatic), आपको मैन्युअल (manually) रूप से सहेजने (save) की आवश्यकता नहीं (no need) है
वापस (Rewind) कैसे (How to) करें/rewind या खाली इनपुट बॉक्स (empty input box) पर डबल-क्लिक Escइनपुट बॉक्स में शब्द (words) होने पर डबल Esc साफ़ (clears) कर देता है, मेनू (menu) नहीं खोलता (does not open) है
मेनू (menu) में क्या (what) चुनना (choose) हैपहले (First) चुनें "किस बिंदु (which point) पर वापस जाना है" और फिर "कैसे वापस जाना है (how to rewind)""पुनर्स्थापित (restore)" स्थिति (state) को वापस करता है / "सारांश (summarize)" कॉन्टेक्स्ट (context) को संपीड़ित (compresses) करता है, उन्हें भ्रमित न करें (don't confuse)
क्या वापस लाया (rollback) जा सकता हैसंपादन उपकरणों (editing tools) + बातचीत (conversation) द्वारा बदली गई फ़ाइलें (Files)ये दोनों (These two) वापस आ (come back) सकते हैं
क्या वापस नहीं आ (cannot come back) सकताbash दुष्प्रभाव (side effects), बाहरी परिवर्तन (external changes), भेजे गए (sent) अनुरोध (requests)rm/mv के परिवर्तन (Changes) बिल्कुल भी (at all) सहेजे नहीं जा (cannot be saved) सकते
git के साथ क्या (what) संबंध (relationship) हैस्थानीय (Local) पूर्ववत (undo) बनाम (vs) स्थायी इतिहास (permanent history)छोटे (Small) कदम (steps) परीक्षण (trial) और त्रुटि (error) इसके लिए, मील के पत्थर (milestones) और दुष्प्रभाव (side effects) git के लिए

अब (Now) आप (you) सक्षम (able to) होने चाहिए: स्पष्ट (Clearly) करें कि चेकपॉइंट (checkpoint) क्या है और यह आपके लिए कब स्वचालित (automatically) रूप से सहेजता (saves) है; रिवाइंड मेनू (rewind menu) खोलने (open) के लिए /rewind या डबल-क्लिक Esc का उपयोग (use) करें, और "पुनर्स्थापित (restore)" और "सारांशित (summarize)" के बीच अंतर (difference) को अलग (tell apart) करें; अपने दिमाग (mind) में एक स्पष्ट सीमा रेखा (clear boundary line) रखें — संपादन उपकरणों (editing tools) द्वारा बदली (changed) गई चीजें वापस आ (come back) सकती हैं, bash दुष्प्रभाव (side effects) और बाहरी स्थितियां (external states) वापस नहीं आ (cannot come back) सकती हैं; और यह भी (also) जानें (know) कि यह और git कैसे श्रम (labor) को विभाजित (divide) करते हैं और आपको कब कमिट (commit) करना चाहिए। इस सीमा (boundary) को मजबूती से (firmly) उकेरें (Engrave), और चेकपॉइंट (checkpoint) एक सुरक्षा जाल (safety net) है जिस पर वास्तव में (truly) भरोसा (relied upon) किया जा सकता है, न कि "नकली (fake) पछतावे की दवा (regret medicine)" जो महत्वपूर्ण (critical) क्षणों (moments) में आपको धोखा (deceive) देगी।

शुरुआत (beginning) में उस वाक्य (sentence) पर वापस लौटें (Return): चेकपॉइंट (Checkpoint) वास्तव में (indeed) पछतावे की दवा (regret medicine) है, लेकिन यह जो ठीक (cures) करता है वह (is) "कोड (code) खराब (messed up) हो गया था," यह ठीक (cure) नहीं (cannot) कर सकता "गलती (mistake) से rm से हटा (deleted) दिया गया" — पूर्व (former) को (for the), आत्मविश्वास (confidently) से (with) /rewind करें, बाद (latter) के लिए (for the), ईमानदारी से (honestly) बैकअप (backup) के लिए पहले से (advance) git commit करें। इन दोनों (two) प्रकार (kinds) की दवाओं (medicines) को अलग (tell apart) करें, और आप (you) शुरुआत (beginning) में उस व्यक्ति (person) की तुलना (compared to) में एक कम (one less) गिरावट (fall) से बचने (avoid) में सक्षम (able) होंगे।


अगला लेख 38 "प्लगइन संदर्भ मैनुअल (Plugin Reference Manual)" है — आपने (you) स्किल (Skill), हुक (Hook), सबएजेंट (Subagent), एमसीपी (MCP), और इस लेख (article) के विभिन्न (various) कमांड (commands) के बारे में सब (all) कुछ (the way) सीखा (learned) है। आप (you) उन्हें एक "प्लगइन (plugin)" में कैसे (how) पैक (pack) करते हैं जिसे इंस्टॉल (installed), अनइंस्टॉल (uninstalled), और दूसरों (others) के साथ (with) साझा (shared) किया जा सकता (can be) है? लेख (Article) 24 आपको (you) दरवाजे (door) के माध्यम (through) से लाया (brought), और यह लेख (article) संदर्भ (reference) के लिए (for) एक उपकरण (tool) पुस्तक (book) के रूप में (as) प्लगइन (plugin) की संपूर्ण (complete) संरचना (structure) और इन्वेंट्री (inventory) फ़ील्ड (fields) को खोल (open) देगा। ज़रा सोचिए (Just think): यदि आप (you) अपने (your own) सुचारू (smooth) कॉन्फ़िगरेशन (configuration) के सेट (set) को "रेडी-टू-यूज़ (ready-to-use)" पैकेज (package) में बनाना (make) चाहते हैं जिसे मित्र (friends) इंस्टॉल (install) कर (can) सकें, तो यह अंदर (inside) से कैसा (what) दिखता (look like) है?