Skip to main content
Tips Claude Code · Pelajaran 10 dari 13 · 11 menit

Rewind dan Plan Mode Claude Code: Batalkan Perubahan Berisiko

Cara membatalkan perubahan Claude Code: yang dipulihkan dan tidak dipulihkan /rewind, cara plan mode menahan edit untuk ditinjau, dan peran git.

Oleh Matthews WongDitinjau pada Dicek dengan Claude Code v2.1.301

Poin utama

Claude Code membuat checkpoint file Anda sebelum setiap prompt yang memulai giliran, dan /rewind bisa memulihkan kode, percakapan, atau keduanya. Yang dilacak hanya edit lewat tool pengedit file milik Claude. Plan mode menahan edit sampai Anda menyetujui rencana. Keduanya tidak menggantikan git: commit sebelum perubahan berisiko.

Setelah pelajaran ini, Anda bisa

  • Memakai /rewind untuk memulihkan kode, percakapan, atau keduanya, dan tahu edit mana yang tidak terlihat olehnya.
  • Memakai plan mode untuk meninjau perubahan sebelum file sumber apa pun disentuh.
  • Mengurutkan perubahan berisiko agar git, bukan harapan, menjadi undo terakhir.
Lihat cara kerjanya

Ikuti diagramnya langkah demi langkah

Tekan Putar, atau melangkah dengan panah. Setiap langkah juga ditulis di bawah diagram.

Apa yang bisa dan tidak bisa dikembalikan rewind

Plan mode mengusulkan sebelum mengedit; setiap prompt membuat checkpoint; perubahan tool Edit dilacak tetapi rm lewat Bash tidak, sehingga Restore code hanya membatalkan edit dan git adalah undo yang sebenarnya.

Ditinjau pada 17 Oktober 2026 · Claude Code v2.1.301

Langkah 1 dari 7. Anda meminta, Claude bekerja lewat tool, dan file Anda berubah. Claude Code juga menyimpan checkpoint, dan git berada di sampingnya sebagai catatan terpisah.

Tombol: ← → langkah · Home / End · K putar atau jeda

  1. Anda meminta, Claude bekerja lewat tool, dan file Anda berubah. Claude Code juga menyimpan checkpoint, dan git berada di sampingnya sebagai catatan terpisah.

  2. Di plan mode Claude membaca file, bisa menjalankan perintah shell untuk menelusuri, dan menulis rencana. Edit ke kode sumber tetap diblokir sampai Anda menyetujuinya.

    claude --permission-mode planTebak langkah berikutnya Anda menyetujui rencana dan mengirim prompt berikutnya. Apa yang disimpan Claude Code sebelum Claude mengedit? (Checkpoint dari file Anda · Tidak ada sampai Anda commit · Sebuah git commit)
  3. Setiap prompt yang memulai giliran membuat checkpoint kode Anda lebih dulu. Menyetujui rencana membuat pengeditan dimulai, dan rewind nanti bisa kembali ke titik ini.

  4. Tool Edit milik Claude mengubah sebuah file. Checkpoint melacak perubahan yang dibuat lewat tool pengedit file Claude, jadi perubahan ini bisa dipulihkan.

  5. Perintah Bash seperti rm, mv, atau cp mengubah file di luar checkpoint. Rewind tidak melacak file yang diubah oleh perintah Bash.

    rm file.txt mv old.txt new.txt cp source.txt dest.txtTebak langkah berikutnya Anda melakukan rewind dan memilih Restore code. Apa yang terjadi pada file yang dihapus Bash? (File itu kembali · Tetap terhapus)
  6. Tekan Esc dua kali atau jalankan /rewind, pilih prompt, lalu Restore code. Perubahan tool Edit dibatalkan; penghapusan lewat Bash tetap, karena tidak pernah dilacak.

    /rewind > Restore code
  7. Checkpoint adalah pemulihan tingkat sesi, bukan version control. Commit sebelum langkah berisiko, agar git bisa membatalkan yang tidak bisa dibatalkan rewind.

    git add -A && git commit -m "before the risky step"

Apa yang dipulihkan rewind Claude Code, dan apa yang dibiarkan?

Claude Code menyimpan keadaan kode Anda sebelum setiap prompt yang memulai giliran, dan menyimpan snapshot file untuk 100 checkpoint terbaru dalam satu sesi. Buka menu rewind dengan /rewind, atau tekan Esc dua kali saat kotak prompt kosong. Pilih sebuah prompt, lalu pilih Restore code and conversation, Restore conversation, Restore code, atau salah satu dari dua opsi Summarize. Jika tidak ada edit file yang tercatat setelah titik itu, menu hanya menawarkan Restore conversation, opsi summarize, dan Never mind.

Baca selengkapnya (2)

Batasnya lebih penting daripada fiturnya. Checkpoint hanya melacak edit yang dibuat lewat tool pengedit file milik Claude, jadi rm, mv, atau cp yang dijalankan lewat Bash tidak bisa dibatalkan rewind. Edit subagent juga biasanya tidak tercatat: rewind hanya memulihkan file yang sudah diedit Claude dalam percakapan Anda, sementara edit lain milik subagent tetap ada. Perubahan manual yang Anda buat di luar Claude Code, dan edit dari sesi lain yang berjalan bersamaan, biasanya tidak tercatat. File symlink dan hard link dilewati saat restore, dengan peringatan.

Checkpoint juga kedaluwarsa. Checkpoint disimpan bersama percakapan, jadi /rewind tetap bekerja setelah Anda melanjutkan sesi, tetapi Claude Code menghapus snapshot file sebuah sesi lewat retention sweep, secara default sekitar 30 hari setelah sesi terakhir menyimpannya. Rewind ke checkpoint yang snapshot-nya sudah hilang bisa gagal dengan pesan No files were restored. Dokumentasi menyebut checkpoint sebagai pemulihan cepat tingkat sesi dan meminta Anda tetap memakai version control untuk riwayat permanen.

Bagaimana plan mode menjaga perubahan berisiko tetap bisa ditinjau?

Plan mode menyuruh Claude meneliti dan mengusulkan perubahan tanpa membuatnya. Claude membaca file, menjalankan perintah shell untuk menelusuri, dan menulis rencana, tetapi tidak mengedit kode sumber Anda, dan edit tetap diblokir sampai Anda menyetujui rencananya. Masuk dengan Shift+Tab, dengan /plan sebelum satu prompt, atau dengan claude --permission-mode plan. Saat rencana siap, Anda memilih cara melanjutkan: mulai di auto mode, setujui dan tinjau tiap edit secara manual, atau lanjut merencanakan dengan masukan. Ctrl+G membuka rencana di editor Anda lebih dulu.

Baca selengkapnya (1)

Bersikaplah tepat tentang apa yang dijanjikan plan mode. Ia memblokir edit kode sumber, bukan semua aksi: perintah shell saat perencanaan ditinjau classifier auto mode bila auto mode tersedia, atau meminta persetujuan Anda bila tidak. Dan di sesi terminal interaktif yang bypass permissions-nya tersedia, Claude Code sama sekali tidak menegakkan blokir plan mode. Claude tetap diinstruksikan merencanakan tanpa mengedit, tetapi edit atau perintah shell yang ia coba berjalan tanpa prompt. Kalau Anda menjalankan dengan izin dilewati, plan mode hanyalah permintaan, bukan penjaga.

Apa urutan yang aman untuk perubahan berisiko?

Susun alat berdasarkan apa yang benar-benar bisa dibatalkan masing-masing. Rencanakan dulu, agar pendekatannya ditinjau sebelum apa pun berubah. Commit keadaan yang berfungsi, agar git memegang titik yang tidak bisa hilang oleh pembersihan apa pun. Lalu biarkan Claude mengedit dalam langkah kecil dan pakai /rewind untuk kesalahan pada edit file, yang cepat dan juga memulihkan percakapan. Ketika kerusakan datang lewat Bash, subagent, atau sesi lain, rewind tidak akan melihatnya, dan git adalah jalan kembali. Pilih Summarize from here ketika hanya konteksnya yang bermasalah: opsi itu memadatkan pesan tanpa menyentuh file.

Baca selengkapnya (2)

Repositori ini menunjukkan pelapisan yang sama di tempat yang tidak terbantu rewind. Skrip merge-nya menulis enam file lewat Bash, jadi tidak ada checkpoint yang mencakupnya. Skrip itu melindungi dirinya dengan merencanakan lebih dulu, menyelesaikan setiap titik sisipan sebelum menulis, sehingga semua edit mungkin dilakukan atau tidak ada yang disentuh. Ketika jaminan itu pernah gagal, pemulihan yang ditulis di skill publishing adalah git status dan git checkout, bukan rewind.

Satu gerbang lagi ada di akhir. Undo untuk kesalahan yang Anda tangkap; verifikasi menangkap yang tidak Anda lihat. Aturan repo ini adalah menjalankan typecheck dan build sebelum push, karena build gagal pada ketidaksesuaian registry yang tidak akan terlihat mata siapa pun.

Cara situs ini melakukannya

Konfigurasi nyata di balik pelajaran ini

Kutipan dari repositori yang membangun dan men-deploy situs ini, apa adanya.

scripts/merge-blog-staging.mjs:12-23
 * Idempotent: a slug already in BLOG_POSTS_STATIC is skipped.
 *
 *   node scripts/merge-blog-staging.mjs [--dry-run]
 *
 * Design note — why this is plan-then-write rather than validate-then-write:
 * the previous version validated the staged CONTENT completely, then began
 * writing, and resolved each insertion anchor at write time. When a constant
 * moved module (REAL_IMAGE_SLUGS left blog-posts-static.ts), the third write
 * threw after messages/*.json and the post registry had already been updated —
 * a half-merged repo that a re-run would not fix, because by then the slug
 * existed in en.json and got skipped. Anchors are now resolved during
 * validation, so either every edit is possible or nothing is touched.

Skrip yang tidak perlu membatalkan apa pun karena memeriksa lebih dulu. Ia menyelesaikan setiap anchor sisipan saat validasi, sehingga semua edit mungkin dilakukan atau tidak ada yang disentuh. Skrip ini berjalan lewat Bash, jadi rewind tidak bisa memulihkannya; merencanakan sebelum menulis adalah cara skrip melindungi enam filenya.

.claude/skills/publishing-blog-posts/SKILL.md:127-140
**The half-merge.** The merge script validates everything, then writes. Anchor
resolution happens at _write_ time, so a moved constant threw mid-write after
`messages/*.json` and `BLOG_POSTS_STATIC` were already updated. Re-running does
not recover — the script skips slugs it finds in `en.json` and considers the job
done. Recovery:

```bash
git status --short          # see which of the six the aborted run reached
git checkout -- <those files>   # revert only those; keep your component
# fix the anchor, then re-run the merge
```

Your component and staging folder are untouched by a failed merge, so only the
generated writes need reverting.

Cadangan yang jujur. Ketika merge setengah selesai, pemulihan yang didokumentasikan adalah git status untuk melihat file mana yang dijangkau proses itu, lalu git checkout hanya pada file tersebut. Git, bukan checkpoint, adalah undo untuk perubahan yang dibuat oleh skrip.

CLAUDE.md:51-51
**Always run `npx tsc --noEmit && npm run build` before pushing.** The build runs `assertBlogParity()` from `lib/blog-meta.ts` which fails if a blog post is registered in `BLOG_POSTS_STATIC` but missing from `BLOG_META` (or vice versa).

Verifikasi sebagai lapisan terakhir. Build menjalankan assertBlogParity(), yang gagal ketika sebuah post terdaftar di satu daftar tetapi tidak ada di daftar lain. Ia menangkap perubahan yang salah yang akan lolos dari plan mode maupun rewind.

Yang sering rusak

Kesalahan yang benar-benar membuang waktu

  • Mengira rewind membatalkan perintah Bash

    Checkpoint tidak melacak file yang diubah perintah Bash. Setelah rm, mv, atau cp, Restore code membiarkan hasilnya apa adanya. Commit sebelum Anda membiarkan Claude menjalankan perintah yang menulis ulang file.

  • Mengira rewind membatalkan edit pihak lain

    Edit dari subagent, dari sesi lain yang berjalan bersamaan, atau yang Anda buat di luar Claude Code biasanya tidak tercatat. Rewind hanya memulihkan file yang sudah diedit Claude dalam percakapan Anda.

  • Memercayai plan mode saat izin dilewati

    Di sesi terminal interaktif yang bypass permissions-nya tersedia, blokir plan mode tidak ditegakkan. Claude diminta merencanakan tanpa mengedit, tetapi edit yang ia coba berjalan tanpa prompt. Di setup itu, gunakan sebagai alur kerja, bukan jaminan.

  • Checkpoint yang sudah kedaluwarsa

    Hanya 100 checkpoint terbaru yang menyimpan snapshot file, dan snapshot dihapus secara default sekitar 30 hari setelah sesi terakhir menyimpannya. Restore yang sudah lama bisa gagal dengan No files were restored. Naikkan cleanupPeriodDays agar disimpan lebih lama.

  • Yang akan saya ubah di sini: git checkout bisa menghapus pekerjaan Anda sendiri

    Pemulihan half-merge mengembalikan file yang disentuh merge dengan git checkout. Jika file itu berisi perubahan Anda yang belum di-commit, pengembalian itu ikut membuangnya. Commit sebelum menjalankan merge akan membuat pemulihan itu aman. Tidak ada yang saya temukan di instruksi repo ini yang menyuruh begitu.

Empat cara tetap aman, dan di mana masing-masing berhenti
Plan modeMenahan edit kode sumber sampai Anda setujuTidak ditegakkan jika bypass permissions tersedia
Rewind: Restore codeEdit dari tool file milik ClaudeBash, subagent, edit dari luar
Rewind: Restore conversationPercakapan, file tetap apa adanyaTidak menyentuh file Anda
git commitSemua yang sudah Anda commitPekerjaan yang belum di-commit
Coba sendiri

Lakukan di komputer Anda sendiri

Anda butuh Claude Code dan repositori git latihan dengan satu file yang sudah di-commit. Anda akan merencanakan perubahan, merusaknya dengan sengaja, dan melihat persis apa yang dikembalikan rewind.

  1. Buat dua file lalu commit, agar git memegang titik awal yang bersih.

    echo "one" > keep.txt && echo "two" > scrap.txt
    git add -A && git commit -m "start"
  2. Mulai di plan mode dan minta perubahan kecil. Baca rencananya, lalu setujui dengan tinjauan edit manual.

    claude --permission-mode plan
    > add a second line to keep.txt
  3. Di sesi yang sama, kirim prompt baru yang meminta Claude mengedit keep.txt lagi dan menghapus scrap.txt dengan rm.

    > change keep.txt to say three, then delete scrap.txt with rm
  4. Tekan Esc dua kali pada prompt kosong, pilih prompt terakhir itu, lalu pilih Restore code.

    /rewind
  5. Periksa hasilnya: keep.txt kembali, scrap.txt tetap hilang. Lalu biarkan git melakukan yang tidak bisa dilakukan rewind.

    git status --short
    git checkout -- scrap.txt
Kuis singkat

Tiga pertanyaan sebelum lanjut

Pilih jawaban untuk melihat kenapa benar atau salah. Tidak ada yang disimpan atau dinilai, jadi tebak saja dengan bebas.

  1. 1.Claude mengedit tiga file dengan tool Edit, lalu menjalankan mv old.txt new.txt lewat Bash. Anda memilih Restore code di awal giliran itu. Apa yang terjadi?
  2. 2.Anda menekan Esc dua kali, tetapi kotak prompt berisi teks yang setengah diketik. Apa yang terjadi?
  3. 3.Sesi Claude Code kedua milik rekan Anda mengedit repositori yang sama saat sesi Anda berjalan. Anda melakukan rewind. Apakah itu membatalkan edit mereka?
Pikirkan dulu

Jawab dalam hati, lalu cek

  1. 1.Kapan Anda memilih Summarize from here dan bukan opsi restore?Lihat jawabannya

    Jawaban:Ketika masalahnya adalah percakapan panjang yang berisik, bukan perubahan file yang buruk. Summarize memadatkan pesan dari titik yang dipilih untuk membebaskan context. Ia tidak mengubah file di disk, dan pesan aslinya tetap ada di transkrip sesi.

  2. 2.Plan mode berarti tanpa edit. Apakah itu berarti tidak ada yang bisa berubah di disk?Lihat jawabannya

    Jawaban:Tidak. Ia memblokir edit kode sumber sampai Anda setuju, tetapi Claude bisa menjalankan perintah shell untuk menelusuri, dan perintah itu ditinjau classifier auto mode atau meminta persetujuan Anda. Dengan bypass permissions tersedia di terminal interaktif, blokirnya sama sekali tidak ditegakkan.

  3. 3.Apakah Anda masih bisa rewind setelah menutup Claude Code dan melanjutkan sesi?Lihat jawabannya

    Jawaban:Bisa, checkpoint disimpan bersama percakapan. Tetapi snapshot file dihapus secara default sekitar 30 hari setelah sesi terakhir menyimpannya, dan hanya 100 checkpoint terbaru yang menyimpannya, jadi restore yang sudah lama bisa gagal.

Pelajari lebih dalam

Bahasan mendalam terkait di situs ini