커머스 AI 운영 실전 8주 과정 · 4주차

안전한 변경: git·워크트리·PR

검토한 코드와 합친 코드가 정말 같은가

난이도 LV.4 중급

수업 3시간 · 자료 4시간 40분

실습: contto.ai 70% 클론

4 / 8

이번 주 목표

이번 주가 끝나면 할 수 있어요

01

워크트리로 동시에

형식 두 개를 서로 다른 워크트리에서 동시에 만들어요.

02

PR과 CI로 거르기

PR마다 lint·typecheck·test가 돌고, 정확한 커밋을 검토해요.

03

만들기 마법사를 완성해요

매체 → 형식 → 고객 유형 → 내용 → 만들기와 이미지(1장)·스레드 글을 붙여요.

4주차 · 안전한 변경: git·워크트리·PR — 2

진행 순서

이번 주 자료는 4시간 40분 분량이에요

진한 칸(코어)만 하면 3시간 수업이에요. 회색 칸은 확장·자습이에요.

20분
45분
15분
20분
30분
70분
45분
20분
15분

0:00

복습 리뷰

0:20

개념 핵심

1:05

개념 심화

1:20

영상 노트

1:40

강사 시연

2:10

실습 1

3:20

실습 2 도전

4:05

상급 노하우

4:25

회고 과제

코어확장전체 4시간 40분

4주차 · 안전한 변경: git·워크트리·PR — 3

진행 순서 · 자세히

구간마다 이렇게 진행해요

시간순서내용구분
0:00–0:20복습·과제 리뷰세션 교체 경험 두 명 발표코어
0:20–1:05개념 (핵심)워크트리, 병합 규칙, 정확한 커밋, 마이그레이션코어
1:05–1:20개념 (심화)폴더가 곧 URL, 기능 하나 = 스킬 하나확장
1:20–1:40참고 영상 노트양실장 코드 해부, CNV 3단계 스킬 동기화확장
1:40–2:10강사 시연워크트리 두 개에서 형식 두 개코어
2:10–3:20실습 1 (기본)만들기 마법사·이미지·스레드·PR·CI·병합코어
3:20–4:05실습 2 (도전)자료실: 사진 업로드확장
4:05–4:25상급 노하우병렬 워크트리와 헤드리스 실행확장
4:25–4:40회고·과제병합 결과 예측 vs 실제 공유코어

4주차 · 안전한 변경: git·워크트리·PR — 4

지난주 복습

팩트시트와 스킬을 생성에 연결해요

스킬

형식마다 스킬 하나씩 (이미지·스레드)

이번 주

고객 유형

만들기 마법사의 세 번째 단계에서 골라요

3주

팩트시트

카피·이미지 문구는 팩트시트 밖 숫자를 쓰지 못해요

토대

4주차 · 안전한 변경: git·워크트리·PR — 5

미니 콘토 지도

콘텐츠 > 새로 만들기를 만들어요

도전: 자료실에 사진을 올리고 이미지(1장)에서 내 사진을 골라요.

01

사람

매체

어디에 올릴지 골라요

02

사람

형식

이미지(1장)·스레드

03

사람

고객 유형

누구에게 말할지

04

사람

내용

제품·할인·전할 말

05

AI

만들기

후보가 나와요

4주차 · 안전한 변경: git·워크트리·PR — 6

개념 1

한 작업, 한 워크트리

에이전트 둘이 한 폴더에서 일하면 서로의 파일을 덮어써요.

한 폴더

에이전트 둘이 한 폴더에서

  • 서로의 파일을 덮어써요
  • 서버 포트가 겹쳐요
  • 누가 바꿨는지 섞여요
워크트리

브랜치마다 폴더 하나

  • git worktree add 로 분리
  • 폴더마다 에이전트 하나
  • 포트도 따로 3001·3002
  • 병합 뒤 git worktree remove

4주차 · 안전한 변경: git·워크트리·PR — 7

개념 1 · 움직임으로

워크트리 두 개가 main으로 돌아오기까지

3D 장면 · 워크트리 두 개가 main으로 돌아오기까지

웹 발표 화면에서 움직여요

1

main에서 출발해요

2

A: 이미지(1장) 브랜치

3

B: 스레드 글 브랜치

4

A는 PR·CI 통과 후 병합

5

B는 형식 목록에서 충돌

6

두 의도를 모두 살려 해결

4주차 · 안전한 변경: git·워크트리·PR — 8

개념 2

병합 규칙 다섯 가지

기계가 먼저 거르고, 사람은 판단에 집중해요.

01

사람

브랜치

main에 직접 커밋하지 않아요

02

AI

PR

30분 리뷰 크기, 기능·테스트·스킬 함께

03

코드

CI

lint·typecheck·test 초록

04

사람

리뷰

승인한 커밋을 적어요

사람 승인 관문

05

코드

병합

승인한 커밋으로만 합쳐요

4주차 · 안전한 변경: git·워크트리·PR — 9

개념 3

검토한 코드 = 합친 코드인가

병합 전에 '합치면 무엇이 바뀌나'를 에이전트에게 예측시켜요.

작성자

AI

리뷰어

사람

GitHub

코드

1. PR · 커밋 A

2. 커밋 A 승인

3. 작은 수정 커밋 B

4. A로만 병합 요청

5. 최신이 B라 거절

6. B만 다시 리뷰

7. B 승인 후 병합

4주차 · 안전한 변경: git·워크트리·PR — 10

개념 4

마이그레이션은 순번과 되돌리기

번호는 병합 직전에 정하고, 파일마다 되돌리는 법을 적어요.

다음 번호

둘 다 003을 만들면 병합 때 부딪혀요

병합 직전

002_offers

002부터 변경. 파일 하나에 변경 하나, 되돌리는 법도 함께

변경

001_brands

처음 만드는 테이블. 번호 순서대로 쌓여요

생성

4주차 · 안전한 변경: git·워크트리·PR — 11

개념 5

PR마다 도는 CI (GitHub Actions)

CI에는 진짜 키가 없어요. 테스트는 가짜 응답으로 돌아요.

# .github/workflows/ci.yml
name: ci
on: [pull_request]
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: pnpm/action-setup@v4
      - run: pnpm install --frozen-lockfile
      - run: pnpm lint && pnpm typecheck && pnpm test

4주차 · 안전한 변경: git·워크트리·PR — 12

개념 6 · 심화

폴더가 곧 URL이에요

PR은 '어느 URL이 바뀌나'로 읽으면 쉬워져요.

폴더 = URL

app/ 아래가 주소예요

app/create/page.tsx

→ /create 화면

app/api/produce/route.ts

→ /api/produce API

app/brand/[id]/page.tsx

→ /brand/아무 아이디

components/ · lib/

재사용 부품 · 로직

4주차 · 안전한 변경: git·워크트리·PR — 13

개념 7 · 심화

기능 하나 = 스킬 하나

기능 만들기

스킬도 함께 만들기

기능 바꾸기

PR에 스킬 변경

회귀 점검

연관 스킬 확인

PR 설명

확인 결과 적기

기능 하나 = 스킬 하나

PR 템플릿의 체크 칸으로

4주차 · 안전한 변경: git·워크트리·PR — 14

운영 루프에서

이번 주는 'AI' 칸의 생성기를 만들어요

콘텐츠의 승인 관문과 코드의 PR 리뷰는 같은 원리예요.

01

코드

데이터

고객 유형·팩트시트를 읽어요

02

AI

AI

이번 주: 형식별 생성기

03

사람

승인 관문

PR 리뷰 = 코드의 승인 관문

사람 승인 관문

04

코드

실행

병합은 승인한 커밋만

05

코드

성과 원장

PR 기록이 변경의 원장

기록이 다음 작업의 입력이 돼요

4주차 · 안전한 변경: git·워크트리·PR — 15

참고 영상 노트

폴더가 곧 URL, 마이그레이션은 순번

출처: 양실장의 바이브코딩대학 「3시간 순삭) 55개 기술 의사결정, 소스코드 해설까지」 · https://www.youtube.com/watch?v=K6Rsy-pHBi0&t=8086s

134:46

역할별 폴더

화면·API, 부품, 로직, DB 변경이 폴더로 나뉘어요.

137:52

폴더가 URL

page는 화면, route는 API, 대괄호는 바뀌는 주소예요.

141:32

마이그레이션 순번

생성 다음 변경을 번호로 쌓고 되돌리는 법을 둬요.

112:08

PR 승인 후 배포

사람이 마지막에 승인하는 운영 절차예요.

구조를 알아야 PR을 읽을 수 있어요.

4주차 · 안전한 변경: git·워크트리·PR — 16

참고 영상 노트

기능을 고치면 스킬도 고쳐요

출처: CNV AI 「AI 에이전트 만들기 3단계 — AI에게 실제 업무 시스템을 개발시키는 방법」 · https://www.youtube.com/watch?v=hG9i8nFHEEs&t=1921s

32:01

기능마다 스킬

기능을 만들 때 에이전트용 사용법 스킬도 같이.

36:16

연관 스킬 회귀 점검

하나를 고치면 관련 스킬이 아직 맞는지 확인해요.

37:51

지침에 수칙으로

'기능 변경 시 스킬 동기화'를 메인 지침에 넣어요.

59:29

모듈로 쪼개기

문제가 생기면 그 모듈만 고쳐요.

PR 하나에 기능 + 테스트 + 스킬 변경이 함께 들어가요.

4주차 · 안전한 변경: git·워크트리·PR — 17

현장에서 있었던 일

승인 뒤에 올라온 커밋

상황

리뷰어가 PR을 승인한 뒤, 작성자가 작은 수정 커밋을 하나 더 올렸어요.

위험

병합 버튼은 최신 커밋을 합쳐요. 검토하지 않은 코드가 그대로 들어갈 뻔했어요.

바꾼 것

병합할 때 승인한 커밋을 지정하고, 다르면 거절되게 했어요. 바뀌었으면 그 부분만 다시 리뷰해요.

4주차 · 안전한 변경: git·워크트리·PR — 18

강사 시연 30분

워크트리 두 개에서 형식 두 개

볼 것: 같은 레지스트리 파일의 충돌 · 두 형식 모두 동작 · 승인한 커밋으로 병합

01

사람

워크트리 둘

이미지·스레드 폴더 두 개

02

AI

에이전트 둘

폴더마다 실행, 포트 3001·3002

03

코드

PR 둘

둘 다 레지스트리에 등록, CI 초록

04

사람

충돌 해결

첫 PR 병합 → 둘 다 살리기

사람 승인 관문

05

사람

예측 비교

병합 결과 예측 vs 실제 diff

4주차 · 안전한 변경: git·워크트리·PR — 19

시연 프롬프트

워크트리를 만들고 요청해요

git worktree add ../mini-image -b feat/format-image
git worktree add ../mini-threads -b feat/format-threads

# mini-image 폴더의 에이전트에게
[목표] 형식 '이미지(1장)': 문구+사진 카드 후보 5안
[범위] lib/formats/image.ts, 레지스트리, skills/format-image/
[완료 조건] 후보 5안 미리보기, 팩트시트 밖 숫자 0, 테스트 통과
[하지 말 것] 다른 형식 파일 수정, 실제 이미지 API 키 사용
끝나면 gh pr create 까지 해.

4주차 · 안전한 변경: git·워크트리·PR — 20

실습 1 · 70분

만들기 마법사와 형식 두 개를 합쳐요

  1. 만들기 마법사: 매체 → 형식 → 고객 유형 → 내용
  2. 워크트리 두 개: 이미지(1장) / 스레드 글
  3. 형식마다 스킬 + 테스트 1개
  4. PR 두 개, CI 초록
  5. 레지스트리 충돌을 '둘 다 살리기'로 해결
  6. 승인한 커밋으로 병합

완료 조건

  • PR 2개, CI 초록
  • 충돌 해결 뒤 두 형식 모두 동작
  • 병합 커밋 = 승인한 커밋
  • 만들기 → 후보 보기까지 동작

4주차 · 안전한 변경: git·워크트리·PR — 21

실습 힌트

막히면 이렇게 요청해요

상황이렇게 말해요
워크트리가 안 만들어져요"이미 체크아웃된 브랜치인지 확인하고 새 브랜치로 만들어"
충돌이 났어요"두 PR의 의도를 각각 설명하고 둘 다 살리는 해결안을 보여 줘"
CI만 실패해요"CI 로그 전문이야. 로컬과 다른 점을 찾아 줘"
PR이 너무 커요"이 PR을 30분 안에 리뷰할 크기로 쪼개는 계획을 줘"
병합 결과가 걱정돼요"합치면 바뀌는 파일과 이유를 먼저 예측해 줘"

4주차 · 안전한 변경: git·워크트리·PR — 22

실습 2 · 도전 45분

자료실: 사진 업로드

완료: 10MB 초과·이미지 아닌 파일 거절 · 버킷 비공개 · 고른 사진으로 후보 생성

01

코드

버킷

Storage 버킷 (비공개)

02

코드

업로드 API

서버에서만, 크기·형식 검사

03

AI

자료실

브랜드 > 자료실 화면에 사진 목록

04

사람

사진 고르기

이미지(1장) 만들기에서 내 사진

05

사람

PR

리뷰 + 승인한 커밋으로 병합

4주차 · 안전한 변경: git·워크트리·PR — 23

템플릿

PR 템플릿 (.github/pull_request_template.md)

## 무엇을 바꿨나 (한 문장)
## 바뀌는 화면·URL
## 확인 방법과 결과
- [ ] pnpm lint · typecheck · test 통과 (CI 초록)
- [ ] 화면 캡처 (데스크톱·모바일)
## 함께 바꾼 것
- [ ] 관련 스킬 (skills/…) 갱신 또는 해당 없음
- [ ] 마이그레이션 번호 확인
## 확인 못 한 것
## 승인한 커밋 (리뷰어가 적기): ________

4주차 · 안전한 변경: git·워크트리·PR — 24

안전 체크

이번 주 안전 체크

정리

워크트리는 병합한 뒤에 지워요

마지막

파일·데이터

마이그레이션 번호 겹침 확인, 업로드 크기·형식 제한, 버킷은 비공개

병합

PR마다 CI 초록, 승인한 커밋으로만 병합

브랜치

main에 직접 커밋하지 않기, force push 금지

토대

4주차 · 안전한 변경: git·워크트리·PR — 25

흔한 실수

병렬 작업에서 자주 나오는 실수

실수무슨 일이 생기나대신 이렇게
한 폴더에 에이전트 둘서로의 파일을 덮어써요워크트리 나누기
충돌을 한쪽 지우기로 해결한 기능이 사라져요두 의도 모두 살리기
승인 뒤 커밋을 그대로 병합검토 안 된 코드가 들어가요승인한 커밋 지정
PR 하나에 기능 여러 개리뷰가 대충 돼요30분 리뷰 크기로
스킬은 그대로 둠에이전트가 옛 방식으로 써요PR에 스킬 변경 포함

4주차 · 안전한 변경: git·워크트리·PR — 26

문제 해결

자주 막히는 곳과 해결

증상원인해결
already checked out브랜치가 다른 워크트리에 있음새 브랜치 이름으로 만들기
lockfile 충돌둘 다 패키지를 추가lockfile은 다시 설치로 재생성
CI에서만 실패환경변수·Node 버전 차이CI 로그 전문으로 원인 찾기
마이그레이션 번호 충돌둘 다 같은 번호병합 직전에 번호 다시 매기기
포트가 겹쳐요같은 포트로 서버 둘워크트리마다 다른 포트

4주차 · 안전한 변경: git·워크트리·PR — 27

자습 목록 · 확장

더 보고 싶은 사람을 위한 구간

자료볼 구간볼 것
양실장 3시간 강의134:46–160:21폴더 구조, 마이그레이션, 코드 읽기
양실장 3시간 강의104:04, 112:08모듈형 모놀리스, PR 승인 후 배포
CNV AI 3단계32:01–38:22, 59:29기능별 스킬, 회귀 점검, 모듈화
공식 문서git worktree워크트리 만들기·지우기
공식 문서GitHub Actions 빠른 시작PR마다 도는 워크플로

4주차 · 안전한 변경: git·워크트리·PR — 28

상급 노하우

병렬 워크트리와 헤드리스 실행: 사람이 없어도 도는 에이전트

기법어떻게왜
한 작업, 한 워크트리git worktree add, 또는 클로드 코드의 워크트리 시작 옵션에이전트끼리 파일을 밟지 않아요
헤드리스 실행claude -p … --output-format json --max-turns 10, codex exec --json스크립트와 CI가 결과를 읽어요
밤 작업매일 밤 모든 브랜드의 팩트시트를 헤드리스로 점검사람이 없는 시간에 준비해 둬요
PR마다 자동 리뷰claude-code-action, codex-action, codex review --base main사람 리뷰 전의 첫 거름망이에요
허용 도구를 좁게--allowedTools 로 명령 지정, 코덱스는 --sandbox workspace-write사람이 없는 실행일수록 권한을 줄여요

4주차 · 안전한 변경: git·워크트리·PR — 29

상급 노하우 · 예시

밤 점검 스크립트와 PR 자동 리뷰

심화 과제(선택): 밤마다 팩트시트를 점검하는 헤드리스 스크립트와, PR마다 리뷰 댓글을 다는 GitHub Actions를 붙여요 (키는 저장소 비밀값으로)

# scripts/nightly.sh 팩트시트 점검
claude -p "brand-analysis 스킬로 brands 의 팩트시트를 점검하고
  확인 필요 항목만 JSON 으로 보고해" \
  --output-format json --max-turns 10 --allowedTools Read
codex exec --json --sandbox workspace-write "같은 점검을 해"

# .github/workflows/review.yml (요지)
on: pull_request
  - uses: anthropics/claude-code-action@v1
    with: { prompt: "RULES.md 기준으로 이 PR을 리뷰해" }

4주차 · 안전한 변경: git·워크트리·PR — 30

과제와 다음 주

이번 주 과제

  • PR 템플릿과 CI 워크플로
  • PR 2개의 병합 기록 (승인한 커밋 = 병합 커밋)
  • 만들기 마법사 + 이미지(1장)·스레드 글
  • 형식 스킬 2개 (format-image, format-threads)
  • (선택) 심화 과제: 밤마다 팩트시트를 점검하는 헤드리스 스크립트와, PR마다 리뷰 댓글을 다는 GitHub Actions를 붙여요 (키는 저장소 비밀값으로)

다음 수업 첫 20분에 '병합 결과 예측 vs 실제'를 두 명이 발표해요.

다음 주

검증: 테스트·기준선·실제 화면

콘텐츠 상태·카피 검수 8항목·E2E 테스트로 '됐어요'를 증거로 바꿔요.

4주차 · 안전한 변경: git·워크트리·PR — 31

가로로 돌리면 더 크게 보여요
← 목록 4주차안전한 변경: git·워크트리·PR 5주차 →