Claude Code에 일을 맡겼더니 멀쩡하던 코드가 엉망이 됐습니다. 이때 바로 git reset --hard부터 치면, 커밋하지 않은 내 작업까지 같이 날아갑니다. Claude Code에는 세션 안에서 되돌리는 기능이 따로 있습니다.
근거: Claude Code 문서 Checkpointing (2026년 11월 2일 확인)
여는 법
- 입력창이 비어 있을 때
Esc를 두 번 누르거나 /rewind를 입력합니다.
입력창에 글자가 있으면 Esc 두 번은 입력한 글을 지웁니다(지운 글은 위 화살표로 다시 불러옵니다).
메뉴를 열면 이 세션에서 보낸 메시지가 쭉 뜹니다. 돌아갈 시점을 고르고, 무엇을 되돌릴지 고릅니다.
| 선택 | 하는 일 |
|---|---|
| Restore code and conversation | 코드와 대화를 둘 다 그 시점으로 |
| Restore conversation | 대화만 되돌리고 지금 코드는 유지 |
| Restore code | 코드만 되돌리고 대화는 유지 |
| Summarize from here / up to here | 대화를 요약해 컨텍스트를 비움(파일은 그대로) |
체크포인트는 자동으로 생긴다
- 턴을 시작하는 메시지를 보낼 때마다 체크포인트가 하나 생깁니다.
- 세션마다 최근 100개 체크포인트의 파일 스냅숏을 보관합니다.
- 세션을 닫았다가 다시 이어도(
resume)/rewind가 됩니다. - 스냅숏은 기본적으로 마지막 저장 후 약 30일 뒤 지워집니다. 더 오래 두려면
cleanupPeriodDays설정을 바꿉니다.
함정: 되돌려지지 않는 것
| 경우 | 되돌려지나 |
|---|---|
| Claude의 파일 편집 도구로 바꾼 파일 | 됨 |
Bash 명령으로만 바꾼 파일(rm, mv, cp 등) | 안 됨 |
| 백그라운드 서브에이전트가 처음 건드린 파일 | 안 됨 |
| 내가 에디터에서 직접 고친 파일, 다른 세션의 편집 | 대체로 안 됨 |
| 심볼릭 링크·하드 링크 파일(dotfile 관리자, pnpm 등) | 건너뜀 |
가장 흔한 사고가 첫 번째 함정입니다. Claude가 rm으로 지운 파일이 그 세션에서 편집 도구로 한 번도 건드리지 않은 파일이라면, /rewind로 돌아오지 않습니다. 단, Claude가 이미 편집 도구로 고친 적이 있는 파일이라면 그 뒤 Bash가 바꾼 내용도 되돌립니다.
체크포인트와 git은 역할이 다르다
공식 문서에도 체크포인트가 버전 관리를 대신하지 않는다고 적혀 있습니다.
- 체크포인트: 세션 안에서 빠르게 되돌리기. 실험하다 틀렸을 때.
- git 커밋: 영구 기록. 협업과 긴 이력.
그래서 큰 작업을 맡기기 전에는 커밋을 하나 해 두세요. 체크포인트가 놓치는 Bash 삭제도 커밋이 있으면 git checkout으로 살립니다.
오늘 할 일
Claude Code를 켜고 입력창이 빈 상태에서 Esc를 두 번 눌러 보세요. 메뉴가 어떻게 생겼는지 한 번 봐 두면, 급할 때 git reset보다 먼저 떠오릅니다.