Барлық практикаПрактика 04
Деңгей 220 мин+100 XP

Кез келгенін кері қайтар: git, checkpoint және rewind

Жиырма минут бойы өз жобаңды әдейі бұзасың — содан кейін өзгерісті мақұлдау саған ештеңеге түспейтін болады.

Осы модульден кейін сен мынаны істей аласың

агенттің кез келген сәтсіз өзгерісін үш түрлі жолмен кері қайтару және үшеуінің де қолы жетпейтін зиянды атап беру

Қажет
  • Тарихы бар git қалтасы — 02-практикадағы QAIRU Event Sign-up беті немесе кемінде бір commit-і бар кез келген жоба
  • Claude Code орнатылған және оған кірілген (01-практика)
  • git — PATH-та қолжетімді; Windows-та алдымен Git for Windows орнатып ал

Агентпен жұмыс істегенде адамдардың көбі бір себептен баяулайды: әр мақұлдау бір жақты есік сияқты көрінеді. Олай емес. Жиырма минут бөліп, өз жобаңды әдейі бұз — үш түрлі зиян, үш түрлі қайтар жол — содан кейін есік екі жаққа да ашылатын болады.

Бұл — git сабағы емес. Бұл — жүйке сабағы. Anthropic-тің дерегінше, Claude Code пайдаланушылары рұқсат сұрауларының 93%-ын мақұлдайды, ал нәтижесін былай атайды: «approval fatigue, where people stop paying close attention» — мақұлдаудан шаршау, адамдар мұқият қарауды қояды (Anthropic, 2026 ж. 25 наурыз). Сен де әр diff-ті мәңгі оқып отырмайсың. Сондықтан сені шын қорғайтын дағды — қырағылық емес, қалпына келтіре білу.

Үш қабат және араларынан таңдап беретін жалғыз сұрақ

Қабат Нені қайтарады Неге тимейді Қайда тересің
Rewind — Esc Esc немесе /rewind осы сеанста Claude-тың өз өңдеу құралдары өзгерткен файлдарды, қоса әңгіменің өзін Bash пәрмені тиген нәрсенің бәріне, субагент өңдеулерінің көбіне, өз қолыңмен енгізген өзгерістерге, машинаңнан тыс ештеңеге Claude Code ішінде, мәзір түрінде
git restore / git reset --hard бақылаудағы файлдарды — соңғы commit-тің күйіне бақылауда жоқ жаңа файлдарға және commit-ке түсіп қойған нәрсенің бәріне өз терминалыңда
git revert тарихта тұрған commit-ті — оның дәл керісін жаңа commit етіп жазу арқылы commit жасалмаған жұмысқа өз терминалыңда

Кезексіз жағдайлардың барлығына дерлік бір сұрақ жауап береді: ол commit-ке түсті ме? Түссе — git revert. Түспесе — git restore немесе git reset --hard. Ал бәрі сол бір Claude сеансының ішінде болса әрі тек өңдеу құралдары қатысса, rewind екеуін де басып озады: ол промптыңды енгізу жолына қайтарып береді, сен сөзін түзеп, қайта жібересің.

100соңғы checkpoint файлдардың түсірілімін сақтайдыClaude Code docs · checkpointing ↗
~30 daysсодан соң бұл түсірілімдердің мерзімі бітеді (cleanupPeriodDays)Claude Code docs · checkpointing ↗
93%рұқсат сұрауларының мақұлданғаныAnthropic, 25 Mar 2026 ↗

Rewind — мерзімі бар сеанс ыңғайлылығы. Ал git — құлағанда түсетін еденің. Агентті git білмейтін қалтада ешқашан жұмыс істетпе (checkpoint құжаттамасы).

Үш рет бұз, үш рет қайтар

  1. Екі терезе аш та, сақтау нүктесін жаса

    Сол жақ терезе — Claude Code. Оң жақ терезе — сол қалтадағы кәдімгі терминал. Екеуін де практика бойы ашық ұста: агент жұмыс істеп жатқанда репозиторийдің қалай өзгеретінін көзбен көріп отырғаның керек.

    терминал — оң жақ терезе
    cd qairu-event
    git status
    git log --oneline

    git status өзгерген бірдеңе көрсетсе, оны дәл қазір сақтап ал. Хабардың әдемі болуы міндет емес.

    терминал — оң жақ терезе
    git add -A
    git commit -m "save point before lab 04"

    git log --oneline шығарған ең жоғарғы жол — енді сенің бастапқы нүктең. Практиканың қалған бөлігінде не істесең де, бәрі соның үстіне қонады.

    Сол жақ терезеде агентті manual режимінде іске қос — сонда әр әрекет орындалмай тұрып көрініп тұрады:

    терминал — сол жақ терезе
    claude --permission-mode manual
  2. Әдейі бұз да, зиянның commit-ке жетуіне жол бер

    Claude-қа шынымен қаламайтын нәрсеңді тапсыр да, нәтижені сақтауына рұқсат бер. Әр қадамды мақұлда.

    1-бұзу — commit-ке түскен зиянClaude Code · manual mode
    index.html файлын қайта жаз: барлық тақырып БАС ӘРІППЕН жазылсын,
    орын есептегішінің орнына "SOON" деген сөз тұрсын, ал тіркелу
    формасының өрістеріндегі мәтін белгілерін өшір.
    
    Содан соң өзгерісті "restyle" деген хабармен commit жаса.

    Бетті браузерде аш. Нашарлап кетті, ал форма енді экраннан оқу бағдарламасымен келген адамға мүлдем жарамайды. Жақсы.

    терминал — оң жақ терезе
    git log --oneline

    Ең үстінде жаңа жол тұр: restyle. Зиян енді тарихыңның ішінде, демек екінші де, үшінші де қабат жарамай қалды.

  3. 1-кері қайтару — git revert, басқалардың көзінше қауіпсізі

    терминал — оң жақ терезе
    git revert --no-edit HEAD
    git log --oneline

    Браузерді жаңарт: бет орнына келді. Бірақ git log енді бір жол ұзарды, қысқарған жоқ. git revert ештеңені өшірген жоқ. Ол нашар commit-ті оқып, оның дәл керісін есептеп шығарды да, сол керісін үстіне жаңа commit етіп сақтады.

    Қатені өшіре салғаннан гөрі нашар естіледі. Шын мәнінде жақсы: commit-тің көшірмесі біреуде бар болса, тарихты қайта жазу оның клонын бүлдіреді, ал үстіне бір commit қосу ешқашан бүлдірмейді. --no-edit мәтін редакторын ашпай өтеді. Ескілеу commit үшін оның қысқа hash-ын бер: git revert --no-edit <hash>.

  4. Тағы бұз — бірақ бұл жолы commit жасатпа

    2-бұзу — commit-ке түспеген былық, үстіне сұрамаған файлыңClaude Code · manual mode
    Беттің фонын ашық қызғылт түске ауыстыр, форманың үстіне алып
    "SOLD OUT!!!" деген баннер қой, сосын өз пайымдауыңды жазып,
    scratch-notes.md деген жаңа файл жаса.
    
    Ештеңені commit жасама.

    Мақұлда. Енді бір қалтада екі түрлі мәселең бар: бақылаудағы файлдың өзгергені және git бұрын-соңды көрмеген жап-жаңа файлдың пайда болғаны. Екеуіне екі түрлі пәрмен керек — жаңадан бастағандар дәл осы жерде уақыт жоғалтады.

    терминал — оң жақ терезе
    git status
    git diff --stat

    index.html — «Changes not staged for commit» бөлімінде. scratch-notes.md — «Untracked files» бөлімінде. Айырмасын есте сақта.

  5. 2-кері қайтару — commit-ке түспеген былықты лақтырып таста

    терминал — оң жақ терезе
    git restore .
    git status

    index.html таза. Ал scratch-notes.md әлі сол жерде тұр: git restore git бұрыннан бақылап отырған нәрсені ғана қалпына келтіреді.

    Бақылауда жоқ қалдықтарға келгенде — атпас бұрын қарап ал. -n нені жоятынын тізіп береді де, ештеңеге тимейді.

    терминал — оң жақ терезе
    git clean -nd

    Ол тізімде scratch-notes.md жалғыз тұруға тиіс. Енді оны шынымен жой: іске асыратын нәрсе — -f.

    терминал — оң жақ терезе
    git clean -fd
    git status

    git restore пәрменін бір жағдай жеңеді: сен немесе агент git add орындап қойған болса, нашар өзгеріс дайындау аймағында жатады да, git restore . оны файлдарыңа қайта көшіріп әкеледі. Ол жағдайдың балғасы — бақылаудағы әр файлдың дайындалған да, дайындалмаған да нұсқасын бір-ақ рет лақтырып, бәрін соңғы commit-тің күйіне қайтарады. Қазір орында: жұмыс каталогың бұрыннан таза, сондықтан ештеңе жоғалтпайсың, ал пәрменнің қай жерде тұрғанын біліп қаласың.

    терминал — оң жақ терезе
    git reset --hard HEAD
    git status
  6. 3-кері қайтару — rewind, git-ке мүлде тимей

    Алдымен — кез келген кері қайтарудан бұрын келетін арзандау қимыл: Claude жауап беріп жатқанда Esc пернесін бір рет бас. Ол тоқтайды, ал істеп үлгерген жұмысы сақталып қалады. Қате өзгерістің жартысын түзету — тұтасын түзетуден жеңіл.

    Енді бетті үшінші рет бұз да, оны сеанстың ішінен қайтарып ал.

    3-бұзу — таза өңдеу құралының зияныClaude Code · manual mode
    Байт үнемдеу үшін index.html ішіндегі әр CSS класының атын
    бір әріпке ауыстыр. Commit жасама.

    Мақұлда да, өзің күтіп отыратын файлға не істегенін қарап шық. Енді енгізу жолын бос қалдырып, Esc пернесін екі рет бас (немесе /rewind деп тер).

    Промпттарың тізілген мәзір ашылады — кезекті бастайтын әр промпт checkpoint жасайды. Алты таңдау шығады: Restore code and conversation, Restore conversation, Restore code, Summarize from here, Summarize up to here, Never mind.

    CSS кластарын қайта атаған промптты таңда да, Restore code and conversation дегенді бас. Файлдар бұрынғы күйіне оралады, ал сол промпт енгізу жолыңда қайта пайда болады — қайта теріп отырмай, сөзін түзейсің. Сыртынан тексер:

    терминал — оң жақ терезе
    git status

    Ештеңе өзгермеген. Сен агенттің жұмысын бірде-бір git пәрменін тықпай кері қайтардың.

    ТереңірекОтырған сеансыңды жоғалтпай, бір идеяны сынап көр

    Rewind сені бір сызықтың бойымен артқа жылжытады. Баламаны сынап көріп, бастапқы әңгімені бүтін қалдыру үшін құжаттама /branch пәрменін немесе claude --continue --fork-session арқылы қайта бастауды ұсынады: артыңда бір тарих, алдыңда екі болашақ (checkpoint құжаттамасы).

  7. Жоқ болып шығатын кері қайтаруды тап

    Осы практикадағы ең маңызды қадам, оған тоқсан секунд кетеді.

    Қосалқы әсерClaude Code · manual mode
    Өңдеу құралыңмен емес, shell пәрменімен ішінде бүгінгі күн жазылған
    agent-was-here.txt деген файл жаса. Содан соң тоқта.

    Bash шақыруын мақұлда. (Claude бәрібір өңдеу құралына жармасса, былай жауап бер: өңдеу құралыңмен емес, shell пәрменімен орында.)

    Енді Esc Esc басып, кодты сол промптқа дейінгі күйге қайтар. Сосын оң жақ терезеге қара:

    терминал — оң жақ терезе
    git status

    agent-was-here.txt әлі орнында тұр. Rewind ештеңені қалпына келтірген жоқ, өйткені checkpoint Claude-тың өңдеу құралдары тиген нәрсені ғана түсіріп алады — Bash пәрмені жасаған, жылжытқан не өшірген файлдарды емес, субагент өңдеулерінің көбін емес, басқа редакторда өз қолыңмен енгізген өзгерістерді емес, машинаңнан шығып кеткен ештеңені емес.

    Оны өз қолыңмен тазала — бүкіл мәселе де сонда. Алдымен бұрынғыдай құрғақ жүріс:

    терминал — оң жақ терезе
    git clean -nd

    Тізімде бір ғана жол тұр, әрі ол — күткен файлың. Енді шынымен:

    терминал — оң жақ терезе
    git clean -fd
  8. Тазалықпен аяқта да, ережені жазып қой

    терминал — оң жақ терезе
    git status
    git log --oneline

    Жұмыс каталогы таза. Бастапқы нүктеңнің үстінде екі жол: бұзу және оны жоққа шығарған revert. Git қате мен түзетуді әдейі қатар ұстайды. Ал бүгін істеген қалған әрекеттерің еш із қалдырмады.

    Соңғы отыз секунд — мұны 03-практикадағы жад файлына тұрақты ережеге айналдыр:

    Әдетті үйретClaude Code · any mode
    Мынаны CLAUDE.md файлына, бұрыннан бар ережелер бөліміне, бір жолмен қос:
    екіден көп файлға тиетін кез келген өзгерісті бастамас бұрын тоқта да,
    алдымен commit жаса деп маған айт.

    Өңдеуді мақұлда да, CLAUDE.md файлын commit жаса. Келесі аптада сен емес, агент саған еске салады.

Кері қайтаруы жоқ зиян

Үш қабат файлдарыңды жабады. Файлдарыңнан тысқары ештеңені жаппайды.

Жылдам тексеру

Claude-тан жобаны ретке келтіруін сұрадың. Ол shell пәрменімен about.html файлын жаңа pages/ қалтасына жылжытты, сосын өңдеу құралымен index.html ішіндегі сілтемелерді жаңартты. Нәтиже ұнамады: Esc Esc басып, «Restore code and conversation» дегенді таңдадың. Дискіде қазір не тұр?

ТереңірекТым артқа reset жасап, бір commit-тен айырылдың. git reflog-ты байқап көр.

git reflog тармақ ұшының соңғы кездері болған бүкіл орнын тізіп береді — жаңа ғана лақтырып тастағандарын қоса. Қатеден бұрынғы жолды тап, hash-ын көшір де, артқа оралу үшін git reset --hard <hash> орында, немесе алдымен қарап алғың келсе, git checkout -b rescue <hash> деп қауіпсіз жерге қойып қой.

Шегі дәл: reflog тек commit-терді ғана біледі. Commit жасалмаған жұмыс еш жерде жазылмаған, сондықтан оны ештеңе таба алмайды.

Бекітіп қой

Дүрбелең промптыClaude Code · paste this when you have already broken something
Маған бірдеңені кері қайтару керек. Әзірге бірде-бір файлды өзгертпе.

1. `git status` және `git log --oneline -5` орында да, шыққан нәтижені сол күйінде көрсет.
2. Менің жағдайым мыналардың қайсысы екенін айт:
   (a) нашар өзгеріс commit-ке түсіп қойған
   (b) нашар өзгеріс commit-ке түспеген
   (c) екеуі де, оның үстіне мен сұрамаған жаңа файлдар бар
3. Менің жағдайыма қай пәрмендерді қандай ретпен орындау керегін дәл жаз,
   әрқайсысы нені біржола жоятынын қоса айт.
4. Мұнда git қалпына келтіре алмайтын нәрсе бар ма, соны айт.

Содан соң тоқта да, күт. Пәрмендерді өзім орындаймын.

Осыны сақтап қой. Қалпына келтіруді агентке түсіндіртіп, пәрмендерді өзің теру — бүлдіретін кез келген әрекетке дұрыс еңбек бөлінісі.

Агентті келесі рет жібермес бұрын0/5 дайын
Өзіңмен ала кет · cheatsheetҮш қабатты кері қайтару жадынамасы

Commit-ке түсті ме, түспеді ме, әлде әлі сеанс ішінде ме — қалпына келтіруді таңдап беретін жалғыз сұрақ, әрқайсысына арналған дәл пәрмендер және ешқандай кері қайтару жете алмайтын зиянның қысқа тізімі.

Аяқталды деп есепте, егер

Үш рет әдейі бұзғаннан кейін жобаң қайтадан таза, commit жасалған күйде тұр, әрі rewind ешқашан қайтара алмайтын өзгерістің бір түрін атай аласың.