AI 코딩 에이전트가 만든 변경 사항 되돌리는 방법
파일 하나 복원, 커밋하지 않은 변경 버리기, 커밋 되돌리기로 AI 코딩 에이전트의 수정을 안전하게 되돌리고, 내 작업은 잃지 않는 방법을 알아보세요.
AI 코딩 에이전트의 변경을 되돌리려면 무엇이 바뀌었는지 확인한 다음, 상황에 맞는 Git 명령을 쓰세요. 수정된 파일에는 git restore, 새 파일에는 git clean, 커밋에는 git revert를 써요. 그 전에 git stash로 안전 사본을 저장하세요. Claude Code 자체의 /rewind로도 코드를 복원할 수 있지만, 모든 변경을 추적하지는 않아요.
이 글은 작업을 버리기로 이미 결정한 뒤부터 시작해요. 결정하는 데는 AI 코드 변경 검토 가이드가 도움이 돼요. Mono는 무엇이 바뀌었는지 보여 주지만 되돌려 주지는 않으므로, Mono를 쓸 때도 명령은 같아요.
1. 에이전트를 멈추고 변경 내용 확인하기
먼저 에이전트를 멈추세요. Mono에서는 에이전트가 작업하는 동안 보내기 버튼이 취소 버튼으로 바뀌어요. 프로젝트 폴더의 터미널에서 다음을 실행하세요.
git status
git log --oneline -5첫 번째 명령은 수정되거나 삭제되거나 스테이징된 파일과 새 파일을 보여 줘요. 두 번째 명령은 에이전트가 만든 커밋을 포함해 최근 커밋을 보여 줘요. 어떤 변경이 내 것인지 표시해 두세요. 되돌리기 명령은 누가 그 줄을 썼는지 모르니까요.
| 보이는 것 | 되돌리는 방법 |
|---|---|
| 수정되거나 삭제된 파일(스테이징 전) | git restore <path> |
| 스테이징된 변경 | git restore --staged <path>, 그다음 파일 되돌리기 |
| 추적하지 않는 새 파일 | git clean -n <path>, 그다음 git clean -f <path> |
| 원하지 않은 커밋 | git revert <commit> |
Mono의 ‘변경 사항 보기’는 마지막 커밋 이후 수정된 파일과 새 파일을 보여 주므로, 에이전트가 만든 커밋은 나오지 않아요.
2. 먼저 안전 사본 저장하기
restore와 clean은 커밋하지 않은 작업을 영구히 버리므로 먼저 모든 것을 저장하세요.
git stash push --include-untracked -m "before undo"
git stash apply --index첫 번째 명령은 수정한 파일과 새 파일을 저장하고 작업 트리를 깨끗하게 비워요. 두 번째 명령은 스테이징 상태를 유지한 채 그 파일들을 다시 가져와요. 겉으로는 달라진 것이 없지만, 이제 git stash list에 “before undo”라는 사본이 들어 있어요.
너무 많이 되돌렸다면 git restore --source "stash@{0}" <path>로 가장 최근 스태시에서 수정한 파일을 되살릴 수 있어요.
3. 파일 하나 또는 그 일부만 되돌리기
범위가 가장 좁은 명령을 고르세요.
git restore <path>는 그 파일에서 스테이징되지 않은 수정을 버려요.git restore --staged <path>는 변경을 스테이징 해제하지만 파일의 수정 내용은 그대로 둬요.git restore -p <path>는 바뀐 부분(hunk)마다 따로 물어봐요. 나와 에이전트가 같은 파일을 수정했을 때 유용해요.git clean -n <path>는git clean -f <path>가 지울 추적하지 않는 파일을 나열해요. 항상 경로를 지정하세요.
각 옵션은 git restore 문서에 설명돼 있어요.
4. 에이전트가 커밋하지 않고 남긴 변경 모두 되돌리기
변경 중에 내 것이 하나도 없다면 프로젝트 루트에서 git restore --staged --worktree .로 모두 버린 다음, 새 파일은 git clean -n .와 git clean -f .로 지우세요. 그렇지 않다면 경로별로 작업하세요.
가상의 예를 들어 볼게요. “tidy-recipes” 프로젝트에서 에이전트에게 CSS 클래스 .btn-primary를 .button-main으로 바꿔 달라고 했어요. 그 전에 에이전트는 아무도 요청하지 않은 잠금 파일(lockfile) 업데이트를 커밋했어요. 이번에는 파일 3개에서 클래스를 바꾸고, 관련 없는 파일 12개의 서식을 바꾸고, styles/tokens.css를 새로 만들었어요. 그사이 나는 README.md를 직접 수정했고, 이 수정은 남기고 싶어요.
안전 사본을 만든 뒤 에이전트가 바꾼 파일(여기서는 src/와 styles/main.css)을 복원하고, 에이전트가 만든 새 파일을 지우세요.
git restore src/ styles/main.css
git clean -n styles/tokens.css
git clean -f styles/tokens.css여기서는 git restore .를 쓰지 마세요. README 수정까지 버려져요. src/ 안에도 내가 수정한 내용이 있다면 에이전트가 바꾼 파일을 하나씩 지정하세요.
이제 git status에는 README.md만 나오고, git diff에는 내가 쓴 줄만 보여요. 잠금 파일 커밋은 아직 남아 있어요.
5. 에이전트가 이미 만든 커밋 되돌리기
git revert는 이전 커밋을 거꾸로 적용하는 새 커밋을 기록해요. git revert 문서에 따르면 작업 트리가 깨끗해야 하므로, 먼저 README 수정을 따로 치워 두세요.
git stash push -m "readme" README.md
git revert <lockfile commit>
git stash pop커밋 자리에는 git log에서 확인한 해시를 넣고, 메시지 편집기를 건너뛰려면 --no-edit를 추가하세요. git stash pop은 “readme”를 다시 가져오고 목록에는 “before undo”를 남겨요. 이제 git status에는 README.md만 나오고, git log --oneline 맨 위에는 Revert "Update lockfile"이 보여요.
이미 푸시한 커밋이라면 git reset보다 revert를 쓰세요. reset은 다른 사람이 이미 받아 갔을 수 있는 기록을 다시 써요. reset이나 rebase 뒤에 커밋이 사라진 것 같다면 git reflog로 최근에 머물렀던 커밋을 해시와 함께 볼 수 있어요.
6. 에이전트 체크포인트를 쓰고 Git을 백업으로 두기
Claude Code는 프롬프트를 보낼 때마다 그 전에 체크포인트를 저장해요. /rewind를 실행하거나 프롬프트가 비어 있을 때 Esc를 두 번 누르면 코드, 대화 또는 둘 다를 복원할 수 있어요. 체크포인트 문서에 나온 제한은 이래요. 셸 명령으로 바뀐 내용은 추적되지 않고, 외부에서 한 수정은 대개 기록되지 않으며, 체크포인트가 버전 관리를 대신하지는 않아요. 이 기능을 쓸 수 있는지는 에이전트를 실행하는 앱에 따라서도 달라요.
그러니 Git을 대비책으로 삼으세요.
- 작업마다 시작 전에 커밋하거나 브랜치를 만들어, “마지막 커밋”이 곧 “에이전트가 손대기 전”을 뜻하게 하세요.
- 묻지 않고 커밋하지 말라고 에이전트에게 알려 두세요. 예를 들어 AGENTS.md 파일에 적어 둘 수 있어요.
- 승인 요청을 켜 두세요. 에이전트의 모든 요청을 받아들이는 Mono의 YOLO 모드는 기본으로 꺼져 있어요. 허용하기 전에 확인할 사항을 참고하세요.
Mono에서는 프로젝트 카드에서 컴퓨터에 있는 그 프로젝트 폴더의 터미널을 열 수 있고, 휴대폰에서도 가능해요(원격 코딩 가이드 참고). Mono는 아직 출시 전이지만 대기자 명단에 등록할 수 있어요.
