107장

부록 G. Git으로 버전 관리하는 법

Git이 어떻게 버전을 기록하는지, 브랜치가 뭔지, 실제로 어떻게 쓰는지 초보자 기준으로 설명합니다.

버전 관리가 뭔가요

게임에 세이브 포인트가 있습니다. 어려운 보스 앞에서 저장하고, 죽으면 그 지점으로 돌아옵니다.

Git은 코드(파일)의 세이브 포인트를 만드는 도구입니다. 언제든 과거 상태로 돌아갈 수 있고, 누가 무엇을 바꿨는지 기록이 남습니다.


커밋 — 세이브 포인트 하나

파일을 저장하는 건 Ctrl+S입니다. 하지만 Git의 저장은 **커밋(commit)**입니다.

Ctrl+S는 “지금 이 내용 저장”이고, 커밋은 “이 시점을 영구 기록으로 남김”입니다.

[커밋 1] 초기 파일 생성

[커밋 2] 홈 페이지 제목 변경

[커밋 3] About 페이지 추가

[커밋 4] 색상 수정  ← 지금 여기

이 줄을 **히스토리(history)**라고 합니다. 어느 커밋으로든 돌아갈 수 있습니다.

커밋 메시지

커밋할 때 “뭘 했는지” 한 줄 적습니다. 나중에 찾아볼 때 쓰는 메모입니다.

git commit -m "홈 페이지 제목을 '내 라이프 위키'로 변경"

기본 명령어 — add, commit, push, pull

Git을 쓸 때 매일 쓰는 명령어 네 개가 있습니다. 직접 타이핑하지 않더라도 “이게 뭔지”는 알면 좋습니다.

흐름으로 보기

내 컴퓨터에서 파일 수정

git add      ← "이 파일들을 다음 커밋에 포함"

git commit   ← "세이브 포인트 만들기"

git push     ← "GitHub에 업로드"

(Vercel이 감지 → 사이트 자동 업데이트)

반대로 GitHub에 있는 내용을 내 컴퓨터로 가져올 때는 git pull입니다. 혼자 작업하면 거의 쓸 일이 없지만, 컴퓨터 두 대를 오갈 때 필요합니다 — 노트북에서 push하고 데스크탑에서 이어 받을 때. 팀으로 작업할 때는 더 자주 씁니다. 다른 사람이 push한 내용을 내 컴퓨터에 반영할 때 pull합니다.

각 명령어 한 줄 설명

명령어역할
git add 파일명커밋에 담을 파일을 선택
git add .변경된 파일 전부 선택
git commit -m "메시지"선택한 파일들로 세이브 포인트 생성
git push커밋들을 GitHub에 업로드
git pullGitHub의 최신 내용을 내 컴퓨터로 가져오기
git status지금 뭐가 바뀌었는지 확인

Claude가 대신 해줍니다

이 명령어들을 외울 필요는 없습니다. Claude Code에게 말로 하면 됩니다.

변경된 파일 커밋하고 GitHub에 올려줘.
커밋 메시지는 "홈 페이지 제목 수정"으로.

Claude가 git add, git commit, git push를 순서대로 실행해줍니다.


브랜치 — 평행 세계

**브랜치(branch)**는 같은 파일의 복사본을 따로 관리하는 공간입니다.

쉽게 말하면 실험실입니다. 원본은 그대로 두고, 복사본에서 마음껏 바꿔봅니다. 잘 되면 원본에 합치고, 아니면 그냥 버립니다.

main 브랜치 (원본 · 공식 버전)

├── 커밋 1
├── 커밋 2
└── 커밋 3  ← 여기서 실험 브랜치 분기

            └── experiment 브랜치
                ├── 커밋 A  (새 디자인 시도)
                ├── 커밋 B  (색상 변경)
                └── 커밋 C  (완성) → main에 합치기

main 브랜치

거의 모든 프로젝트에 main이라는 기본 브랜치가 있습니다. Vercel은 main 브랜치를 보고 사이트를 배포합니다. 항상 잘 돌아가는 버전을 여기 두는 게 관례입니다.


실제로 어떻게 쓰나요

가장 흔한 패턴은 이렇습니다.

1. 브랜치 만들기

git checkout -b 새기능이름

-b는 “새 브랜치 만들면서 이동”입니다.

2. 변경하고 커밋

# 파일 수정 후
git add .
git commit -m "무엇을 했는지"

3. main에 합치기

잘 됐으면 main 브랜치로 돌아와서 합칩니다.

git checkout main
git merge 새기능이름

4. 다 쓴 브랜치 삭제

git branch -d 새기능이름

이 튜토리얼에서 실제로 한 것

이 튜토리얼 자체가 브랜치를 사용해서 만들어졌습니다.

main (원래 튜토리얼)

└── tutorial-v2 브랜치 분기
    ├── 필수/심화/부록 구조 추가
    ├── 1장~10장 개편
    ├── 부록 A~F 작성
    └── 완성 → main에 합침

작업하는 동안 main은 원래 상태 그대로였습니다. tutorial-v2에서 마음껏 고치고, 다 됐을 때 main에 합쳤습니다. 실수가 있어도 main은 안전했습니다.


자주 쓰는 명령어

# 현재 브랜치 확인
git branch

# 새 브랜치 만들고 이동
git checkout -b 이름

# 브랜치 이동
git checkout 이름

# 현재 브랜치에 다른 브랜치 합치기
git merge 이름

# 변경 내역 확인
git log --oneline

# 특정 시점으로 돌아가기 (조심해서)
git checkout 커밋해시

Claude에게 시키는 방법

Git 명령어를 외울 필요는 없습니다. Claude Code에게 말로 하면 됩니다.

새 브랜치 만들어서 지금 내용으로 이동해줘. 이름은 "새-디자인"으로.
지금 브랜치에서 변경한 내용을 main에 합쳐줘.
지난 5개 커밋 목록 보여줘.
3번 전 커밋 상태로 돌아가고 싶어. 어떻게 해?

바이브 코딩할 때 Git이 특히 중요한 이유

바이브 코딩 이전에는 코드 한 줄 고치는 데도 시간이 걸렸습니다. 그래서 신중하게 짜고, 한번 만든 걸 조금씩 고쳐가는 게 합리적이었습니다.

바이브 코딩은 다릅니다. 만드는 게 너무 쉬워졌습니다.

이게 버전 관리 방식도 바꿉니다.

고치는 것보다 새로 만드는 게 빠를 때가 있다

뭔가 잘 안 되는 코드가 있을 때, 예전에는 원인을 찾아서 수정하는 게 최선이었습니다. 지금은 다릅니다.

(기존 방식)
코드 안 됨 → 원인 파악 → 디버깅 → 수정 → 또 안 됨 → ...

(바이브 코딩)
코드 안 됨 → 새 브랜치 → Claude에게 처음부터 다시 만들어달라고 → 됨 → main에 합침

고치는 게 막힌다면, 그냥 새로 생성하는 게 빠릅니다.

실험 비용이 0에 가까워졌다

“이거 다른 방식으로 해보면 어떨까?”라는 생각이 드는 순간, 브랜치 하나 만들고 바로 시도해볼 수 있습니다.

main (잘 돌아가는 현재 버전)
├── experiment-A 브랜치 — 새 레이아웃 시도
├── experiment-B 브랜치 — 다른 색상 팔레트
└── experiment-C 브랜치 — 완전 다른 구조

잘 되면 main에 합치고, 아니면 브랜치째 버립니다. main은 건드리지 않았으니 언제든 원상태입니다.

예전에는 실험 하나에 큰 비용이 따랐습니다. 이제는 아닙니다. 실험을 많이 할수록 브랜치가 더 유용합니다.

요약

바이브 코딩 시대에 Git이 중요한 이유:

  • 만들기 쉬워진 만큼 잘못 만들기도 쉬워졌다 → 되돌아갈 포인트가 필요
  • 실험이 쉬워진 만큼 더 많이 시도하게 된다 → 각 실험을 브랜치로 분리
  • 고치는 것보다 다시 만드는 게 나을 때 → 새 브랜치에서 깔끔하게 시작

언제 브랜치를 쓰나요

매번 쓸 필요는 없습니다. 간단한 수정은 그냥 main에서 해도 됩니다.

브랜치를 만드는 게 유용할 때:

  • 큰 변경을 할 때 — 페이지 전체 구조를 바꾸거나, 여러 파일을 동시에 손댈 때
  • 실험할 때 — “이게 될지 모르겠는데 한번 해볼까” 싶을 때
  • 원본을 지키고 싶을 때 — 지금 상태가 잘 돌아가고 있어서 건드리기 무서울 때

이 튜토리얼 정도 규모에서는 “큰 개편을 하기 전에 브랜치 하나 만들고 시작한다” 정도면 충분합니다.