AI 업무 활용

git으로 AI가 바꾼 내용 확인하기: 작업 전 커밋부터 diff와 커밋까지

Claude Code가 파일을 수정하기 전에 git으로 기준점을 남기고, 작업 뒤에는 `git status`와 `git diff`로 실제 변경 내용을 읽는 흐름을 익힙니다. AI에게 diff 설명을 요청할 수 있지만, 설명만 믿지 않고 사람이 diff와 실행 결과를 확인한 뒤 직접 스테이징하고 커밋하는 절차를 사용합니다.

목차 보기

이런 분께Claude Code가 만든 변경을 되돌릴 수 있는 기준점과 검토 기록을 남기기 위해 git의 최소 작업 흐름을 익히려는 초보 사용자

준비사항
  • vibe-expenses 폴더에 expenses.csv, summarize.py, CLAUDE.md가 준비되어 있을 것
  • Git이 설치되어 있고 터미널에서 git 명령을 실행할 수 있을 것
  • 앞선 글에서 `--by-category` 기능의 기대 출력과 검증 방법을 이해했을 것

01AI 체크포인트와 git을 같은 것으로 보지 않기

Claude Code는 프롬프트마다 자동 체크포인트를 만들고 `/rewind`로 코드나 대화를 되돌리는 선택지를 제공하지만, 공식 문서에서도 이것이 git 같은 버전 관리를 대체하지 않는다고 설명합니다. 특히 Bash 명령의 rm, mv, cp 등으로 바뀐 파일과 Claude Code 밖에서 직접 바꾼 파일은 체크포인트가 추적·복원하지 못할 수 있습니다. 따라서 중요한 작업에서는 AI 기능과 별개로 git 기준점을 남기는 편이 좋습니다.

수단이번 글에서의 역할주의
Claude Code 체크포인트세션 중 되돌리기 보조모든 외부 변경을 추적하는 버전 관리가 아님
git commit작업 전·후 명시적인 상태 기록커밋할 파일을 사람이 확인해야 함
git diff실제 줄 단위 변경 확인AI 설명보다 diff 원문이 기준
실행 결과기능이 요구사항대로 동작하는지 확인diff가 작아도 결과 검증은 별도로 필요

이 글의 목표는 git의 모든 기능을 배우는 것이 아닙니다. '작업 전 상태를 커밋하고, AI가 바꾼 뒤 diff를 읽고, 실행 결과를 확인한 다음 커밋한다'는 최소 흐름만 사용합니다.

02AI에게 맡기기 전에 작업 전 기준점을 커밋하기

이미 git 저장소라면 현재 상태를 먼저 확인하고, 아직 저장소가 아니라면 연습 폴더에서 초기화할 수 있습니다. 다음 예시는 앞선 글까지의 파일을 작업 전 기준점으로 기록하는 흐름입니다. 실제 프로젝트에서는 무조건 모든 파일을 추가하지 말고 `git status`로 포함 대상을 확인합니다.

요청문
cd vibe-expenses
git init
git status --short
git add expenses.csv summarize.py CLAUDE.md
git diff --cached
git commit -m "Baseline before category summary"

이 컴퓨터에서 git으로 처음 커밋한다면 커밋 작성자 정보가 없어서 git commit이 멈출 수 있습니다. 그럴 때는 git config --global user.name "이름"과 git config --global user.email "이메일"로 한 번 설정한 뒤 다시 커밋합니다. 공개 저장소에 올릴 계획이라면 공개해도 괜찮은 이메일을 사용합니다.

`git diff --cached`는 커밋에 들어갈 스테이징된 변경을 보여줍니다. 처음 커밋이라 출력이 길 수 있지만, 적어도 의도하지 않은 파일이 섞이지 않았는지 확인합니다. 실제 업무 저장소에서 `.env`, 키 파일, 개인 데이터 같은 민감한 파일을 무심코 추가해서는 안 됩니다. 이 시리즈는 애초에 가상 데이터만 사용합니다.

03한 번에 한 기능만 맡기고 변경 파일 수를 제한하기

이번 작업은 summarize.py에 `--by-category` 옵션을 추가하는 한 가지 기능입니다. Claude Code에 요청할 때도 다른 리팩터링이나 파일 정리를 함께 하지 말라고 범위를 좁힙니다. 변경이 작을수록 diff를 읽기 쉽고 문제가 생겼을 때 원인을 찾기 쉽습니다.

요청문
summarize.py에만 `--by-category` 옵션을 추가해줘.
기본 실행 결과는 바꾸지 말고, expenses.csv와 CLAUDE.md는 수정하지 마.
외부 패키지를 추가하지 마.
수정 후 어떤 파일을 바꿨는지 알려줘.

Claude Code 공식 문서에는 자연어로 'what files have I changed?'처럼 변경 파일을 물을 수 있다고 안내되어 있습니다. 그러나 AI의 답만으로 변경 범위를 확정하지 않고, 바로 다음 단계에서 git이 보여주는 실제 상태를 확인합니다.

04git status와 git diff를 사람이 먼저 읽기

작업이 끝났다고 가정하면 먼저 `git status --short`로 변경 파일을 봅니다. 요구사항대로라면 summarize.py만 수정되어 있어야 합니다. 그다음 `git diff -- summarize.py`로 아직 커밋하지 않은 실제 변경 내용을 읽습니다. 파일명만 확인하고 바로 커밋하면 AI가 한 줄을 잘못 바꿔도 놓칠 수 있습니다.

요청문
git status --short
git diff -- summarize.py
  • expenses.csv나 CLAUDE.md가 예상치 않게 수정되지 않았는지 본다.
  • 기본 월별 출력 로직이 제거되거나 의미가 바뀌지 않았는지 본다.
  • `--by-category` 조건이 있을 때만 추가 출력이 실행되는지 본다.
  • 요청하지 않은 패키지 import나 파일 쓰기 코드가 추가되지 않았는지 본다.
  • diff에 이해되지 않는 변경이 있으면 커밋 전에 이유를 다시 묻는다.

여기서 git diff는 '무엇이 실제로 바뀌었는가'를 보여주는 자료이고, AI 설명은 그 자료를 이해하도록 돕는 보조 수단입니다. 둘이 다르면 diff 원문과 실제 파일을 기준으로 판단합니다.

05Claude에게 diff 설명을 요청하되 설명과 변경을 분리하기

diff가 낯설다면 Claude Code에게 현재 변경을 설명해 달라고 요청할 수 있습니다. 이때 새 수정까지 한꺼번에 시키지 말고, 우선 설명만 요구하면 검토와 추가 변경이 섞이지 않습니다.

요청문
현재 git diff를 읽고 summarize.py에서 바뀐 내용을 설명해줘.
1) 기존 동작 유지 부분
2) `--by-category`를 위해 추가된 부분
3) 원본 CSV를 수정하는 코드가 있는지
4) 외부 패키지를 새로 쓰는지
네 항목으로만 정리해줘. 지금은 파일을 더 수정하지 마.
편집 예시
[편집 예시 · 실제 응답 아님]
- 기존 월별 합계 계산은 유지되고 기본 실행에서는 같은 형식으로 출력됩니다.
- category별 누적 자료구조와 `--by-category` 조건이 추가되었습니다.
- 입력 CSV에 쓰는 코드는 추가되지 않았습니다.
- Python 표준 라이브러리만 사용하며 새 외부 패키지는 없습니다.

위 내용은 실제 Claude Code가 읽은 diff의 결과가 아니라 설명 형식을 보여주는 편집 예시입니다. 실제 작업에서는 각 설명이 `git diff`의 줄과 일치하는지 직접 대조합니다.

06실행 결과까지 확인한 뒤 스테이징하기

diff가 의도대로 보여도 동작 확인은 별개입니다. 앞 글에서 검증한 두 명령을 다시 실행해 기본 출력과 옵션 출력을 확인합니다. 이 글은 git 흐름에 집중하므로 Python 코드를 다시 싣지 않고, 이미 검증한 summarize.py를 사용한다는 전제로 실행 명령만 제시합니다.

요청문
python summarize.py expenses.csv
python summarize.py expenses.csv --by-category

기본 실행은 2026-09 = 26600, 2026-10 = 9800이어야 합니다. 옵션 실행에서는 2026-09의 food 20500, transport 2900, supplies 3200이 확인되어야 합니다. 값이 다르면 커밋하지 말고 코드나 입력 파일을 다시 확인합니다.

07마지막으로 staged diff를 보고 설명적인 메시지로 커밋하기

검토와 실행 확인이 끝났다면 변경한 파일만 스테이징합니다. 이어서 `git diff --cached`로 실제 커밋에 들어갈 내용을 한 번 더 보고 커밋합니다. Claude Code에 자연어로 커밋을 요청할 수도 있지만, 초보자는 어떤 파일이 들어가는지 직접 확인한 뒤 커밋하는 흐름을 먼저 익히는 편이 좋습니다.

요청문
git add summarize.py
git diff --cached -- summarize.py
git commit -m "Add category summary option"
git status --short

공식 문서에는 'commit my changes with a descriptive message'처럼 자연어로 커밋을 요청할 수 있다고 안내되어 있습니다. 다만 이 기능을 쓰더라도 커밋 직전 diff와 대상 파일을 검토하는 원칙은 같습니다. 커밋 후 `git status --short`가 비어 있다면 추적 중인 변경 사항이 남아 있지 않은 상태입니다.

시점명령 또는 행동확인 목적
작업 전git commit되돌아갈 기준점 만들기
작업 후git status --short바뀐 파일 범위 확인
검토git diff실제 줄 단위 변경 읽기
기능 확인Python 두 실행 명령기대 출력 유지 여부 확인
커밋 전git diff --cached커밋 대상 최종 확인
완료git commit검토한 변경을 새 기준점으로 기록

직접 확인할 항목

Claude Code 공식 문서(2026-09-22 확인)의 git·체크포인트 설명을 기준으로 작성 · Claude Code와 git 명령을 실제 실행했다고 주장하지 않음

  • 작업 전 기준점 커밋 → 작업 후 status/diff → 실행 확인 → staged diff → 커밋 순서가 일관적인지 확인
  • `git status --short`, `git diff -- summarize.py`, `git diff --cached -- summarize.py`, `git commit -m` 문법을 점검
  • Claude Code 체크포인트가 git을 대체하지 않는다는 공식 문서의 한계를 반영했는지 확인
  • Bash 명령 및 Claude Code 외부 변경은 체크포인트 복원 한계가 있을 수 있음을 명시했는지 확인
  • Claude에게 diff 설명을 요청하는 예시는 실제 응답이 아님을 표시했는지 확인
  • 본문에 Python 코드 블록을 포함하지 않아 이 글 자체에는 별도 Python 코드 실행 검증 대상이 없음을 확인
검증 범위의 한계

이 글에서는 실제 git 저장소를 만들거나 Claude Code에 커밋을 맡긴 실행 기록을 제시하지 않습니다. 명령은 학습용 연속 예제이며 실제 프로젝트에서는 기존 브랜치 정책, .gitignore, 민감정보 포함 여부를 별도로 확인해야 합니다.