Változtatások visszavonása a Claude Code-ban: /rewind és git
MarkdownVisszatekerési módok, a checkpointing korlátai, git checkout, stash, reflog és védelem a romboló parancsok ellen. Öt módszer egy állapot visszaállítására.
A teljes cikk elolvasása
A Ailoot használatával kapcsolatos gyakorlati információk a dokumentációban találhatók.
Mi a visszavonás a Claude Code-ban, és miért nem elég három szint?
Főbb pontok
A Claude Code-ban a visszavonásnak három szintje van: a beépített /rewind parancs (azonnali helyreállítás egy munkameneten belül), a git checkout (visszaállítás az utolsó commit állapotára) és a git reflog (katasztrófahelyzeti biztonsági háló arra az esetre, ha valaki git reset --hard parancsot futtatott). Mindegyik szint a hibák egy-egy saját osztályát kezeli, és semmi olyat nem fed le, ami kívül esik a határain. Ha csak a /rewind parancsot ismered, az első komolyabb baklövésnél kellemetlen helyzetbe kerülsz.
A Claude Code használatának első hetében kapcsoltam be a /rewind parancsot, amikor két prompt alatt tönkretette a projektem hitelesítési logikáját. Visszatekertem, megkönnyebbülten felsóhajtottam, és folytattam a munkát. Egy hónappal később újabb helyzet adódott: adatbázis-séma migrációt írtam, Claude segített, commitoltam, átváltottam egy másik ágra—aztán rájöttem, hogy kihagytam egy szükséges lépést. A /rewind nem segített—a munkamenet már más volt. A korábbi commitra való git checkout segített. Egy hónappal ezután véletlenül azt mondtam az agentnek: „állíts vissza mindent az utolsó push állapotára”, mire lefuttatta a git reset --hard parancsot, és háromórányi munkát tett tönkre. A git reflog megmentett—a megsemmisített commitok hash-ei még megvoltak.
Ez a három történet a védelem három szintjét mutatja be: eltérően működnek, különböző hibákat fognak meg, és mindegyikre szükség van. Ez az útmutató parancsokkal, korlátozásokkal és példákkal magyarázza el az egyes szinteket, és azt is megmutatja, hogyan állíts be előre egy projektet, hogy Claude már az első alkalommal se tehesse tönkre.
A visszavonás 3 szintje—mi és mikor:
| Szint | Parancs | Mire terjed ki | Mire NEM terjed ki |
|---|---|---|---|
| 1. Munkameneten belül | /rewind vagy Esc Esc | A Claude saját eszközeivel módosított fájlok; beszélgetési előzmények | Bash-parancsok, külső szerkesztők, adatbázis-migrációk |
| 2. Commit előtt | git checkout . vagy git stash | A fájlok összes nem commitolt módosítása | Már commitolt módosítások |
| 3. Katasztrófa | git reflog + git reset --hard <hash> | A reset --hard vagy force-push által megsemmisített commitok | Romboló bash-parancsok (rm, adatbázis-migrációk) |
Most sorra vesszük mindegyik szintet—pontosan mit kell tenni, milyen buktatók vannak, és hogyan állíthatod be a dolgokat úgy, hogy ne legyen mit visszavonni, mert semmi sem romlott el.
Hogyan hívhatod elő a /rewind parancsot: paranccsal vagy Esc-Esc-vel?
Főbb pontok
A Claude Code-ban kétféleképpen nyithatod meg a Rewind menüt. Az első, hogy beírod a /rewind parancsot a beviteli mezőbe. A második, hogy kétszer megnyomod az Esc billentyűt, amikor a beviteli mező üres. Ha van szöveg a mezőben, a dupla Esc először törli, és elmenti a beviteli előzmények közé; a következő dupla lenyomás nyitja meg a menüt. A /rewind parancsnak a /checkpoint az aliasa.
Minden válasz után Claude automatikusan pillanatképet készít az összes fájlról, amelyet az adott munkamenetben szerkesztett. A pillanatképek a ~/.claude/file-history/{sessionId}/ mappában tárolódnak, legfeljebb 30 napig. A pillanatképek inkrementálisak—csak az állapotok közötti különbségek mentődnek el, nem a teljes fájl. Alapértelmezés szerint munkamenetenként legfeljebb 100 pillanatkép tárolódik. Ez azt jelenti, hogy a legtöbb valós projektben bármikor rendelkezésedre áll az egész munkanap során Claude által végzett összes módosítás teljes előzménye.
A visszatekerési menü megnyitásához nyomd meg kétszer az Esc billentyűt, amikor a beviteli mező üres:
[user-input is empty]
> _
[press Esc, Esc]
Rewind to which message?
1. Create a migration for the User table (3 files changed)
2. Add the lastLoginAt field (1 file changed)
3. Rewrite the authorization logic (5 files changed)
...
Ha van szöveg a beviteli mezőben, az Esc első dupla lenyomása törli, és elmenti az Up előzmények közé. Ez akkor hasznos, ha már elkezdtél gépelni, majd rájössz, hogy vissza kell tekerned. Íme egy idézet az Anthropic hivatalos dokumentációjából:
Ha van szöveg a promptmezőben, a dupla Esc először törli azt ahelyett, hogy megnyitná a menüt. A törölt szöveg a beviteli előzmények közé kerül, így a visszatekerési menü után a felfelé nyíllal visszaállíthatod.
A /rewind parancs ugyanezt teszi—megnyitja a menüt. Van egy aliasa, a /checkpoint, amely ugyanoda vezet. Hogy melyik módszer kényelmesebb, megszokás kérdése. Én az Esc Esc kombinációt használom—gyorsabb, és nem kell levennem a kezemet a billentyűzetről.
A Rewind menü 6 módja: melyiket válaszd, és mikor?
Főbb pontok
Miután kiválasztottál egy visszatekerési pontot a Rewind menüben, megjelenik egy második menü hat móddal. Három visszaállítja az állapotot (Restore code and conversation, Restore conversation, Restore code), kettő összefoglalja az előzményeket (Summarize from here, Summarize up to here), egy pedig megszakítja a műveletet (Never mind). A leggyakoribb helyzetre—„a kódot és a beszélgetést is visszatekerném”—az első opció való.
Válassz ki egy pontot a listából, és megjelenik a műveletek menüje. Hat eleme van, mindegyik mást csinál.
A módok teljes táblázata:
| Mód | Mit csinál | Mikor válaszd |
|---|---|---|
Restore code and conversation | Visszaállítja a fájlokat és a beszélgetési előzményeket a kiválasztott pontra | A leggyakoribb helyzet: Claude rossz irányba indult, én pedig a megfelelő megfogalmazással szeretném újrakezdeni |
Restore conversation | Csak a beszélgetési előzményeket tekeri vissza; a fájlok maradnak a mostani állapotukban | A kód rendben van, de a beszélgetés félresiklott; innen újrafogalmazom, miközben megtartom a jelenlegi módosításokat |
Restore code | Visszatekeri a fájlokat; a beszélgetés változatlan marad | Claude néhány módosítása felesleges volt, de továbbra is szükségem van a beszélgetés kontextusára (például megegyeztünk a következő lépésekben) |
Summarize from here | Összefoglalja a kiválasztott pont UTÁNI teljes részt. A fájlokat nem érinti | Egy hosszú hibakeresési munkamenet elhasználta a kontextust; helyet kell felszabadítanom úgy, hogy az eredeti utasítások teljes egészükben megmaradjanak |
Summarize up to here | Összefoglalja a kiválasztott pont ELŐTTI teljes részt. A fájlokat nem érinti | Hosszú kezdeti tájékoztató után egy konkrét feladat következett—az eligazítást egyetlen üzenetbe sűrítjük, a legutóbbi munkát pedig változatlanul hagyjuk |
Never mind | Változtatás nélkül bezárja a menüt | Meggondoltam magam |
A Summarize up to here funkció a 2026. május 11–15. között, a 20. héten kiadott Claude Code v2.1.139-v2.1.142 verzióban jelent meg:
A korai kontextust a Rewind menün keresztül sűrítheted össze a 'Summarize up to here' használatával.
A Restore és a Summarize közötti különbség alapvető. A Restore visszatér egy korábbi állapothoz, és visszavon mindent, ami a kiválasztott pont után történt. A Summarize semmit sem von vissza; csak tömörít—az eredeti üzenetek a munkamenet átiratában megmaradnak referenciaként, de az aktív kontextusban csak az összefoglaló marad. Akkor használd a restore-t, ha azt szeretnéd, hogy „mintha ez meg sem történt volna”. A summarize-t akkor használd, ha „meg akarod tartani, de nem akarod, hogy helyet foglaljon a kontextusban”.
A Restore conversation vagy a Summarize from here után a kiválasztott prompt eredeti szövege visszakerül a beviteli mezőbe—szerkesztheted és újra elküldheted. A Summarize up to here után a beviteli mező üres, és a beszélgetés végén maradsz.
Milyen változtatásokat NEM von vissza a /rewind?
Főbb pontok
A /rewind csak azokat a módosításokat követi, amelyeket Claude a saját fájlszerkesztő eszközeivel végzett. Semmi mást nem lát, és semmi mást nem tud visszaállítani. A nem látható módosításoknak három csoportja van: bash-parancsok (rm, mv, cp), külső szerkesztések (a kézi szerkesztéseid egy IDE-ben, más munkamenetek módosításai) és a fájlokon kívüli műveletek (adatbázis-migrációk, git push, távoli API-hívások).
Ez az a fő korlátozás, amibe az emberek beleütköznek: a /rewind zöld pipát mutat, és azt írja, hogy „a visszatekerés sikeres”, a projekt mégis hibás, mert Claude nem csak fájlokat módosított. Nézzük meg a három esetet.
1. A bash-parancsok nem követhetők. Ha Claude egy fordulóban lefuttatja a rm file.txt vagy mv old.txt new.txt parancsot, ezek a módosítások nem kerülnek be a checkpointba. Az Anthropic dokumentációja ezt kifejezetten kimondja:
A checkpointing nem követi a bash-parancsokkal módosított fájlokat. Például, ha a Claude Code lefuttatja a rm file.txt, mv old.txt new.txt, cp source.txt dest.txt parancsokat, ezek a fájlmódosítások nem vonhatók vissza a rewind segítségével.
Ez azt jelenti, hogy ha Claude a bash eszközzel önállóan töröl, áthelyez vagy másol egy fájlt, a /rewind nem fog mindent helyreállítani. A git checkout vagy egy biztonsági mentésből történő visszaállítás segíthet, de ehhez több kell két billentyű lenyomásánál.
2. A külső szerkesztéseket nem érzékeli. Ha kézzel megnyitsz és szerkesztesz egy fájlt a VS Code-ban, vagy egy második Claude-munkamenet párhuzamosan módosítja ugyanazokat a fájlokat, az első munkamenet nem látja ezeket a változtatásokat. A checkpoint pillanatképe akkor készül, amikor Claude befejez egy fordulót az aktuális munkamenetben. Ami a fordulók között történik, az kívül esik a felelősségén.
3. A fájlokon kívüli műveletekre egyáltalán nem terjed ki. Egy npx prisma migrate dev paranccsal alkalmazott Prisma-migráció megváltoztatta az adatbázis sémáját—ezt a /rewind nem vonja vissza, mert az adatbázis a projekt fájlrendszerén kívül van. A origin/main ágra végzett force-push ugyanez: a commit felkerült a távoli szerverre, a checkpoint pedig nem hozza vissza. Egy távoli API-hívás, amely pénzt vont le vagy törölt egy rekordot, csak az API saját mechanizmusaival vonható vissza.
Szabály: Ha egy feladat a projektfájlokon kívül bármit érint—adatbázis-migrációkat, git push műveletet vagy távoli API-kat—készíts külön visszaállítási tervet minden egyes külső hatáshoz. A /rewind csak az aktuális munkamenet helyi fájlelőzménye.
/rewind és git: miben különböznek, és miért van szükség mindkettőre?
Főbb pontok
A /rewind helyi visszaállítás egyetlen Claude Code-munkameneten belül. Inkrementális pillanatképeket tárol legfeljebb 30 napig, munkamenetenként legfeljebb 100-at. A git a projekt hosszú távú, a csapattal megosztott előzménye, ágakkal, összeolvasztási ütközésekkel és távoli tárolóval. Egyik sem helyettesíti a másikat. A legjobb gyakorlat az, ha minden logikai mérföldkőnél git commit-ot készítesz, a commitok között pedig a /rewind-ra hagyatkozol.
Az Anthropic dokumentációja közvetlenül megfogalmazza ezt a párosítást:
A checkpointok célja a munkamenet szintű gyors helyreállítás. Commitokhoz, ágakhoz és hosszú távú előzményekhez továbbra is verziókezelő rendszert (például Gitet) használj. A checkpointok kiegészítik a szokásos verziókezelést, de nem helyettesítik. Gondolj a checkpointokra úgy, mint „helyi visszavonásra”, a Gitre pedig úgy, mint „végleges előzményre”.
A különbségek egyetlen táblázatban:
| Paraméter | /rewind | git |
|---|---|---|
| Részletesség | A beszélgetés minden fordulója | Minden commit |
| Tárolás | Legfeljebb 30 napig, munkamenetenként legfeljebb 100, helyben a ~/.claude/file-history/ mappában | Véglegesen, a tároló .git/ mappájában és a távoli szerveren |
| Mit követ | Claude saját eszközeivel végzett szerkesztései | Minden commitolt változtatás |
| Mit NEM követ | Bash, külső szerkesztések, migrációk, push | Nem commitolt változtatások |
| Parancs | Claude-on belüli parancs | Külső verziókezelő rendszer |
| Visszatekeri a beszélgetést | Igen | Nem |
| Munkamenetek között is működik | Csak ugyanazon munkameneten belül | Mindenhol |
A párosítás egyszerű: valahányszor eljutsz egy olyan állapothoz, ahol „ez működik, és nem akarom elveszíteni”, készíts git commit-ot. A commitok között hagyatkozz a /rewind-ra—azonnali, nem kell hozzá commitüzenet, és nem zsúfolja tele a git előzményeit köztes állapotokkal. A munka végén commitolj—lehetőleg értelmes, atomi commitot.
Miért nem fedi le egyetlen /rewind az egész feladatot?
A visszavonás a kontextusmérnökség egyik esete. Ha kezeled a munkamenet kontextusát (mikor commitolj, mikor nyomd meg a /rewind billentyűkombinációt, milyen szabályokat tegyél a CLAUDE.md fájlba), kiszámítható Claude-ot kapsz, amely nem teszi tönkre a projektet vagy veszíti el a munkát.
Miért veszélyes a git reset --hard, ha „visszaállítást” kérsz Claude-tól?
Főbb pontok
A természetes nyelvben a „visszaállítás” azt jelenti, hogy „nézd meg az előzményeket”, nem azt, hogy „pusztítsd el”; Claude-nak alapértelmezésben git checkout parancsot kellene ajánlania, nem reset --hard-ot; a védelmet a CLAUDE.md-ben kell beállítani.
A „mentsd el az aktuális állapotot, és térj vissza az utolsó push állapotára” kérés ezekhez a parancsokhoz vezethet:
git stash save "WIP: Tracker enter/leave disabled + fsSyncModule fix" # saved uncommitted changes
git reset --hard 35eb731 # destroyed commits d63695e..882e618
Az első parancs helyes volt—elmentette a nem commitolt módosításokat a stashbe. A második romboló volt: a 35eb731 commitra írta át az ágat, így az ez és a 882e618 közötti összes commit árvává vált. Alapértelmezés szerint az árva commitok a .git/objects/ mappában maradnak a git gc lefutásáig, ami rendszerint két héten belül automatikusan megtörténik. De ha akkor nem tudtad, mit kell tenni, már fogyott az időd.
A logika egyszerű: a természetes nyelvben a „visszaállítás”, „visszalépés”, „helyreállítás”, „visszafordítás” és „visszavonás” azt jelenti, hogy „nézd meg a korábbi állapotot” vagy „térj vissza egy biztonságos helyre”. Nem azt jelentik, hogy „semmisítsd meg az előzményeket”. A git reset --hard parancs megsemmisíti az előzményeket—átírja az ágat, és eltávolítja azokat a commitokat, amelyek a HEAD-en keresztül elérhetők. Biztonságos alternatíva a git checkout <commit>, amely detached HEAD-et hoz létre, és lehetővé teszi a régi állapot megtekintését az ágak érintése nélkül.
A legfontosabb gyakorlati tanulság az, hogy minden jelentősebb feladat előtt commitold az aktuális állapotot, különösen több fájlt érintő refaktorálás előtt. Egyetlen commit révén Claude bármilyen hibája egy git checkout . paranccsal orvosolható, munka elvesztése nélkül.
Hogyan ment meg a git reflog egy romboló reset után?
Főbb pontok
A git reflog megmutatja a tárolóban végrehajtott összes HEAD-mozgás helyi előzményét—még a git reset --hard vagy force-push által eltávolított commitokét is. Alapértelmezés szerint minden mozgás 90 napig tárolódik. Ha Claude (vagy te, vagy valaki más) romboló paranccsal megsemmisített commitokat, a git reflog megmutatja a hash-eiket, az ágat pedig a git reset --hard <reflog-hash> paranccsal állíthatod helyre.
Romboló reset után azonnal futtasd le a git reflog parancsot:
git reflog
A kimenet így néz ki:
35eb731 HEAD@{0}: reset: moving to 35eb731
882e618 HEAD@{1}: commit: middleware refactoring complete
d63695e HEAD@{2}: commit: leaveRemove method finalized
1f9c8a3 HEAD@{3}: commit: tracker enter/leave disabled
35eb731 HEAD@{4}: pull origin main
A HEAD@{1} és a HEAD@{3} közötti bejegyzések éppen azok a „megsemmisített” commitok. Nem tűntek el a git helyi objektumtárolójából; csupán az ágon keresztül váltak elérhetetlenné. A helyreállításukhoz:
# Create a branch from the last “destroyed” commit
git branch recovered-work 882e618
# Or switch directly
git reset --hard 882e618
Ezután az ág ismét tartalmazza a katasztrófáig vezető teljes előzményt.
A Reflog korlátai:
- Csak helyi. A reflog a
.git/logs/HEADfájlban tárolódik; a távoli tárolóban nincs ott. Ha force-push-t hajtasz végre, majd törlöd a helyi tároló példányát, a reflog is eltűnik a mappával együtt. - Alapértelmezés szerint 90 napig él. A régebbi bejegyzéseket a git gc eltávolíthatja. A beállítás a
git config gc.reflogExpire 200.days.agoparanccsal módosítható. - Arra nem terjed ki, ami sosem volt a HEAD-ben. Ha egy commit csak a stashben volt, és a stash megsemmisült, a reflog csak a stash legutóbbi állapotát mutatja, a belső előzményeit nem.
Csapatszabály: katasztrófa után soha ne futtasd azonnal a git gc --aggressive parancsot. Először vizsgálódj a reflog segítségével, és állítsd helyre az adatokat; csak ezután végezd el a többi műveletet. És soha ne töröld a helyi tárolóklónt, amíg nem vagy biztos benne, hogy minden szükségeset feltoltál.
Hogyan védd meg a projektet a romboló git-parancsoktól a CLAUDE.md segítségével?
Főbb pontok
A projekted CLAUDE.md fájljába tegyél olyan utasításblokkot, amely meghatározza, mely git-parancsokat futtathatja Claude önállóan, melyekhez kell kifejezett megerősítés, és melyek tilosak, hacsak a felhasználó nem használ egy pontos kifejezést. Claude a projekt rendszerpromptjaként kezeli a CLAUDE.md fájlt, és alapértelmezés szerint követi ezeket a szabályokat. Így egy „veszélyes” promptból két biztonságos parancs lesz.
A sérülékenység az, hogy Claude alapértelmezés szerint nem rendelkezik védelmi kontextussal. A „visszaállítás” kérést git reset --hard parancsként értelmezi, mert technikailag ez egy érvényes módszer. Helyezd el a védelmet a CLAUDE.md fájlban—a projekt rendszerpromptfájljában.
Minimális szabály (illeszd be a CLAUDE.md fájlba):
## Git Safety Protocol
- NEVER run destructive git commands (push --force, reset --hard, checkout ., restore ., clean -f, branch -D) unless I explicitly request these actions. Taking unauthorized destructive actions is unhelpful and can result in lost work.
- When I say "roll back", "go back", "restore", "revert", "undo" - interpret as REVIEW commands: use `git log`, `git diff`, `git checkout <commit>` (creates detached HEAD), or `git stash` (preserves changes).
- ALWAYS ask for confirmation before ANY command that:
- Changes HEAD position to a different commit on a branch
- Modifies commit history
- Could lose uncommitted work
- Includes flags --hard, --force, --aggressive
- Before any destructive command, output a numbered comparison:
- SAFE: use `git checkout <commit>` to view temporarily
- DESTRUCTIVE: use `git reset --hard` to permanently destroy
- Wait for my explicit choice before executing.
Kibővített csapatszabály (add hozzá a tároló gyökerében lévő CLAUDE.md fájlhoz):
## Git Workflow Rules
- Minden működő mérföldkőnél készíts commitot. WIP-commit előtt futtasd a `git status` és `git diff` parancsot, csak a kifejezetten átnézett, név szerint megadott fájlokat vedd fel a `git add -- path/to/file` paranccsal, majd commit előtt nézd át az index diffjét. Az időzítő felülvizsgálati emlékeztető, nem engedély a teljes munkafa felvételére.
- Never use `git add .` or `git add -A` for commits by Claude. Only specify files by name, after `git status` + `git diff`.
- Before `git push --force` to main—stop and ask me. In feature branches, force-push cautiously, only if you're sure I'm willing to lose the previous version.
- When resolving merge conflicts, never choose "ours" or "theirs" immediately—show me both versions first, then I'll decide.
- `.gitignore` must contain `.env*`, `.claude/personal/`, `node_modules/`, `dist/`. If they're missing, add them.
A blokkok hozzáadása után a következő „állítsd vissza az utolsó push állapotára” kérés ilyen választ eredményezne:
3 nem commitolt fájlt látok, és 4 commit van az utolsó push után. Két lehetőség van:
- BIZTONSÁGOS: létrehozok egy
view-last-pushágat agit checkout <last-push-hash>paranccsal—megőrzöm az összes munkát, de ideiglenesen megmutatom a push állapotát.- ROMBOLÓ:
git reset --hard <last-push-hash>—véglegesen megsemmisítek 4 commitot és a nem commitolt módosításokat. Ezek csak agit reflogsegítségével állíthatók vissza 90 napon belül. Melyiket választod?
Ez fél perc beszélgetés, nem négy óra elvesztett munka.
Mi az 5 módszer a Claude Code-ban történő visszavonásra, és hogyan válaszd ki a megfelelőt?
Főbb pontok
Ha valami elromlik, öt egyre kétségbeesettebb szint áll rendelkezésre: /rewind (munkameneten belül), git checkout . (nem commitolt módosítások), git checkout <commit> (visszatérés egy régi commitra az előzmények elvesztése nélkül), git reset --hard <commit> (az ág visszaállítása, az ennél újabb commitok elvesztésével), git reflog + helyreállítás (katasztrófa, minden elveszett). Mindegyik szint súlyosabb és veszélyesebb az előzőnél.
A „Claude elrontotta, sürgősen vissza kell állítanom” helyzetben ezen a létrán alulról felfelé haladj. Mindig az 1. szinten kezdd.
1. szint. /rewind—azonnali visszavonás egy munkameneten belül.
Nyomd meg az Esc Esc billentyűkombinációt, vagy írd be, hogy /rewind. Válaszd ki a hiba előtti pontot. Válassz egy módot (általában Restore code and conversation). Egy másodperccel később már a múltban vagy, és kezdheted elölről. Az olyan esetek 80%-át lefedi, amikor „Claude rossz dolgot csinált”.
2. szint. git checkout .—az összes nem commitolt módosítás visszavonása.
git diff # first see what actually changed
git checkout . # undo all uncommitted changes in all files
# or selectively:
git checkout -- path/to/file.ts # only one file
Akkor hasznos, ha a /rewind nem működött (például Claude bash-en keresztül módosított fájlokat), vagy a munkamenet előzményein kívüli módosításokat kell visszavonnod. Minden nem commitolt módosítás véglegesen eltűnik. Ha ezt esetleg megbánnád, előbb futtasd a git stash parancsot (lásd a 2.5. szintet).
2.5. szint. git stash—tedd félre a módosításaidat.
git stash save "might still need this"
# return to a clean state (without changes)
# ...
# if you change your mind—restore from stash:
git stash pop
Jó kompromisszum a „vesszen örökre” és a „maradjon így” között. A stash helyben megmarad, amíg kifejezetten nem törlöd.
3. szint. git checkout <commit>—visszatérés egy régi commitra az előzmények elvesztése nélkül.
git log --oneline # find the hash of the right commit, e.g. abc1234
git checkout abc1234 # detached HEAD—view without changing anything
# like the state? create a branch from it:
git checkout -b recovery abc1234
# return:
git checkout main
Ez egy biztonságos „ideiglenes visszatérés”. A detached HEAD nem módosítja az ágat; a main ágon (vagy azon, amelyiken éppen voltál) végzett jelenlegi munkád érintetlen marad. Ha dolgozni szeretnél ebben az állapotban, hozz létre egy ágat.
4. szint. git reset --hard <commit>—az ág visszaállítása egy adott pontra.
⚠️ Romboló. A megadott hash-nél újabb commitok árvává válnak.
git reflog # note the hash of the current state
git reset --hard abc1234 # rewrite the branch
# found a mistake? return through reflog:
git reset --hard HEAD@{1} # to where you were before the reset
Csak akkor használd, ha biztos vagy benne, hogy nincs szükséged az ennél újabb commitokra. És reset előtt mindig ellenőrizd a git reflog kimenetét, hogy tudd, hová térhetsz vissza, ha meggondolod magad.
5. szint. git reflog + helyreállítás—katasztrófahelyzet.
Valaki (Claude, te vagy egy kollégád) már lefuttatta a git reset --hard parancsot vagy force-push-t végzett, és eltüntette a munkát. Mit kell tenni?
git reflog # look for the last hash before the disaster
git branch recovered HEAD@{N} # create a branch from it
git checkout recovered # switch to it
git diff main # compare with the current state
git checkout main && git merge recovered # restore into main, if you're sure
Ha a reflogot már törölték (alapértelmezés szerint 90 nap után), az utolsó lehetőség a git fsck --lost-found, amely megmutatja a .git/objects/ mappában lévő lógó commitokat. Ez már-már régészet, de néha működik.
Szabály a megfelelő szint kiválasztásához:
| Mi történt | Szint |
|---|---|
| Claude rossz módon írt át 3 fájlt | 1. /rewind |
| Kipróbáltam, nem tetszik, a munkamenet nem segít | 2. git checkout . |
| Kézzel rontottam el, sajnálnám elveszíteni, lehet, hogy visszaállítom | 2.5. git stash |
| Commitoltam; egy commitot vissza kell lépnem | 3. git checkout <commit> |
| Biztos vagyok benne, hogy nincs szükségem az ennél újabb commitokra | 4. git reset --hard |
| Már töröltem egy romboló paranccsal | 5. git reflog |
Hogyan védd meg a projektet, hogy ne legyen mit visszavonni?
Főbb pontok
A legjobb visszavonás az, amelyre nincs szükség. Három védelmi szabály: 30 percenként nézd át az előrehaladást, és egy működő mérföldkövet csak kifejezetten átnézett útvonalak felvételével commitolj; tedd be a szükséges .claude/personal/ és .env* sorokat a .gitignore fájlba; a nagyobb kísérleteket külön ágon végezd a git checkout -b experiment-<name> paranccsal. Ez szűkíti a helyreállítási rést a commitolt fájloknál; a külső rendszerekhez és a nem commitolt munkához továbbra is külön helyreállítási terv kell.
1. szabály. Commitolj 30 percenként.
Ne várd meg, amíg „elkészül a feladat”. Commitolj minden működő köztes lépést. A commitüzenet bármi lehet; a lényeg, hogy Claude (vagy te) egyetlen git checkout paranccsal visszatérhessen egy működő állapothoz.
# at the beginning of a task
git status # inspect all staged and unstaged paths
git diff # review the changes
# Replace this example path with the actual file you reviewed.
git add -- path/to/file.ts
git diff --cached # verify exactly what will be committed
git commit -m "wip: starting User schema migration"
# after 30 minutes (or after the first working iteration)
git status
git diff
git add -- path/to/file.ts # actual reviewed path, not a directory wildcard
git diff --cached
git commit -m "wip: User schema is ready, migration applied locally"
# at the end of the task—a meaningful commit
git reset --soft HEAD~2 # combine the three wip commits into one
git commit -m "feat(auth): add lastLoginAt field to User table"
Ha PostToolUse emlékeztetőt adsz hozzá, tartsd meg ugyanazt az átnézési és kifejezett útvonalas felvételi szabályt. Az időzítőből ne legyen ellenőrizetlen automatikus commit: különben idegen módosítások vagy már indexbe tett fájlok is belekerülhetnek.
2. szabály. Minimális .gitignore.
A következő soroknak szerepelniük kell a projekt gyökérkönyvtárában:
# secrets
.env
.env.local
.env.*.local
# local Claude Code settings (not pushed to the team repository)
.claude/personal/
.claude/sessions/
.claude/file-history/
# dependencies and build
node_modules/
dist/
.next/
build/
A .claude/personal/ mappát saját kísérleteimhez és jegyzeteimhez használom; ezek nem kerülhetnek be a megosztott tárolóba. A .claude/sessions/ és a .claude/file-history/ mappa a Claude Code helyi tárolója; nincs helyük a tárolóban, sok helyet foglalnak, és egy adott géphez kötődnek.
3. szabály. Kísérletezz külön ágon.
Ha nagy a feladat (10+ fájl refaktorálása, átállás új adatbázisra, egy modul újraírása), ne a főágon dolgozz:
git checkout -b experiment/auth-rewrite
# work, commit every 30 minutes
# if it works:
git checkout main
git merge experiment/auth-rewrite
# if it doesn't:
git checkout main
git branch -D experiment/auth-rewrite # delete the branch
# that's it, the main branch is intact
Ez az egyszerű szokás a „Claude tönkretette a projektet” helyzetet erre változtatja: „Claude tönkretett egy ágat, töröltem, és kezdhetjük elölről.”
4. szabály. Veszélyes műveletek előtt használd a git tag parancsot.
Adatbázis-migráció, nagy refaktor vagy függőségfrissítés előtt hozz létre egy taget:
git tag pre-prisma-migration-v2
# work
# something went wrong:
git reset --hard pre-prisma-migration-v2
# or just take a look:
git checkout pre-prisma-migration-v2
A tag egy commit elnevezett mutatója, amelyet a reflog tisztítása után sem veszítesz el.
Mi következik: hogyan illeszkedik a visszavonás a kontextusmérnökségbe?
Főbb pontok
A visszavonás nem különálló készség, hanem a Claude Code-munkamenet kontextusa kezelésének része. Ha tudod, mikor nyomd meg a /rewind billentyűkombinációt, mikor készíts git commit-ot, és mikor használd a git stash parancsot, egy teljes munkafolyamatot kezelsz, nem csupán egyetlen parancsot. Ez a Context Engineering része. Nélküle Claude hétköznapi asszisztensként viselkedik; vele kiszámítható eszközzé válik.
A visszavonás e három szintje egyetlen készség infrastruktúrája: annak tudásáé, hogyan állíts vissza egy állapotot, ha valami elromlik. Ez a készség önmagában szűk körű. Más kontextusmérnöki eszközökkel együtt azonban valami többre képes.
A Plan Mode nem engedi, hogy azonnal kódot írj—előbb terv készül, aztán jóváhagyás, majd végrehajtás. Ez a megelőző visszavonás: nem írsz meg olyasmit, amit később vissza kellene vonnod, mert a tervet előre átnézték. Bővebben a Plan Mode a Claude Code-ban című útmutatóban olvashatsz róla.
A CLAUDE.md olyan szabályokat határoz meg, amelyeket Claude alapértelmezés szerint tiszteletben tart, beleértve a fent bemutatott Git Safety Protocolt. Ez megelőző védelem a romboló parancsok ellen.
A Second Brain munkamenetek között is memóriát biztosít Claude-nak a projektről—tudja, milyen kódod van, mi az üzleti logika, és milyen megállapodások születtek korábban. Minél több a memória, annál kisebb az esélye, hogy rossz dolgot tesz.
A Skills és alügynökök jelentik a módszertanodat kódban. Ha a helyes git-munkafolyamat beépül egy Skillbe, egyetlen alügynök sem fog megerősítés nélkül git reset --hard parancsot futtatni.
Mindez együtt a Context Engineering. A prompt előtt kezeld a kontextust, ne közben. Bővebben itt olvashatsz róla: mi az a context engineering.
A visszavonás az utolsó védelmi vonal. A Plan Mode + CLAUDE.md + Second Brain + Skills az első négy. Ha ezek be vannak állítva, a visszavonás ritka és gyors. Ha nincsenek, mindennapos rutinná válik.
Források
A visszavonás ott kezdődik, ahol a tervezés véget ér.
További részletek
Kérdések és válaszok: Változtatások visszavonása a Claude Code-ban: /rewind és git
WIP-ellenőrzőponthoz használjak git add . parancsot?
Nem. Futtasd a git status és git diff parancsot, csak a név szerint megadott, átnézett fájlokat vedd fel, majd commit előtt ellenőrizd a git diff --cached kimenetét. Az időszakos ellenőrzőpont nem ad engedélyt idegen vagy korábban indexbe tett módosítások felvételére.
A /rewind visszavon egy adatbázis-migrációt vagy távoli API-műveletet?
Nem. Az útmutató az ellenőrzőpontokat a munkamenet támogatott fájlszerkesztéseire korlátozza. Az adatbázis, a távoli Git és az API hatásaihoz külön helyreállítási lépések kellenek; az ellenőrzőpont hatókörén kívüli fájlokhoz Gitet vagy biztonsági mentést használj.