WEB - PHP, JQuery, Bootstrap

Codex “원본 망가지는 문제” 해결 - 연습 시나리오

초심으로 2026. 5. 22. 11:32

728x90

AI 코딩 도구(Codex, Copilot 등)를 쓰다 보면 이런 상황 한 번쯤 겪는다.

“이 부분만 고쳐달라고 했는데… 파일 전체를 갈아엎어버림 😇”

특히 기존 레거시 코드나 안정적으로 돌아가는 로직이 있을 때,
AI가 과하게 리팩토링하면 머지 지옥이 시작된다.

오늘은 이걸 깔끔하게 해결하는 방법을 정리해본다.


🔥 문제 상황

예를 들어 이런 요청을 한다고 해보자.

year 파라미터 검증 로직만 추가해줘

그런데 Codex는:

  • 들여쓰기 바꿈
  • 변수명 변경
  • 함수 구조 변경
  • 불필요한 리팩토링까지 수행

결과:

👉 “뭐가 바뀐 건지 diff가 안 보임”


✅ 해결 전략 핵심 3가지

1. 무조건 work branch에서 작업

git checkout -b codex/task-name

👉 절대 main에서 바로 작업하지 말 것

이 한 줄이 사고 80%를 막는다.


2. Codex에게 “작업 방식”을 명확히 지시

이거 진짜 중요하다.

현재 브랜치에서만 작업해.
기존 코드 구조는 유지하고 최소 수정만 해.
불필요한 리팩토링 하지 마.
작업 후 git diff 요약을 보여줘.
커밋하지 마.

👉 Codex는 지시 안 하면 과하게 수정하는 습관 있음


3. 필요한 부분만 선택 머지 (git add -p)

핵심 기술

git diff
git add -p

이걸로:

  • 좋은 수정만 선택
  • 이상한 리팩토링은 버림

👉 “AI 코드 = 전부 수용”이 아니라
👉 “필터링해서 사용”


🧪 실전 연습 시나리오

시나리오 1: 오타만 수정

Codex 요청:

오타만 수정하고 다른 건 절대 건드리지 마

확인:

git diff

선택 반영:

git add -p

시나리오 2: 일부 기능만 추가

year 파라미터 검증 로직만 추가해
기존 주차 계산 로직은 건드리지 마

👉 Codex가 많이 건드리면?

git add -p

👉 검증 코드만 가져오기


시나리오 3: patch 방식 (강력 추천)

Codex 요청:

원본 파일은 수정하지 말고
unified diff patch 형식으로만 만들어줘

결과 적용:

git apply fix.patch

👉 가장 깔끔한 방식


시나리오 4: 브랜치 비교 후 가져오기

git diff main...codex/task-name

특정 파일만 가져오기:

git checkout codex/task-name -- file.php

시나리오 5: 커밋 단위로 가져오기

Codex 브랜치:

git add -p
git commit -m "Add validation"

main에서:

git cherry-pick 커밋해시

👉 안정적인 운영 방식


💡 추천 워크플로 (실전용)

이거 하나만 기억해도 충분함:

git checkout -b codex/task

# Codex 작업

git diff
git add -p
git commit -m "필요한 변경만 반영"

git checkout main
git cherry-pick 커밋해시

⚠️ Codex 사용할 때 주의점

  • ❌ “전체 리팩토링 해줘” → 위험
  • ❌ main 브랜치에서 작업 → 매우 위험
  • ❌ diff 확인 없이 머지 → 재앙

🚀 결론

Codex는:

❌ “자동 코드 생성기”가 아니라
✅ “코드 제안 도구”로 써야 한다

핵심은 이거 하나:

👉 “AI가 만든 코드는 항상 선택해서 반영하라”


👍 한 줄 요약

Codex는 똑똑하지만 과하다.
그래서 Git으로 제어해야 한다.

 

반응형