AI가 코드를 만들어 줬는데 이전 버전이 더 나을 것 같을 때 되돌릴 수 있을까요? Git(깃)이 있으면 됩니다. 게임의 세이브포인트처럼, 코드의 중요한 순간마다 저장해 두고 언제든 돌아갈 수 있게 해주는 도구입니다.
왜 버전관리가 필요한가
Git 없이 코드를 관리한다면 어떻게 될까요? 'app_final.js', 'app_final2.js', 'app_진짜최종.js', 'app_진짜최종_수정본.js'처럼 파일을 복사하는 악몽이 시작됩니다. Git은 이 혼란을 없애고, 언제 누가 무엇을 왜 바꿨는지를 깔끔하게 기록합니다.
핵심 개념 3가지
Git의 세 가지 핵심 개념
- 커밋(Commit): 세이브포인트. '이 시점의 코드 상태를 저장해!'라는 명령입니다. 메시지를 함께 써서 '어떤 변경을 했는지' 기록합니다.
- 브랜치(Branch): 독립적인 작업 공간. 메인 코드에 영향을 주지 않고 새 기능을 시험해 볼 수 있는 복사본입니다. 게임의 '다른 회차 저장' 같은 개념입니다.
- 풀 리퀘스트(Pull Request, PR): 내 브랜치의 변경사항을 메인 코드에 합쳐 달라는 요청입니다. 코드 검토와 토론이 여기서 일어납니다.
기본 워크플로우
가장 자주 쓰는 Git 명령어 흐름
# 1. 현재 상태 확인 — 어떤 파일이 바뀌었나
git status
# 2. 변경 파일을 스테이지에 올리기 (commit 준비)
git add src/components/Button.tsx
# 또는 모든 변경 파일을 한 번에
git add .
# 3. 커밋 — 세이브포인트 생성
git commit -m "feat: 로그인 버튼 디자인 개선"
# 4. 원격 저장소(GitHub)에 올리기
git push origin main
# 5. 최신 코드 받아오기
git pull origin main
브랜치 사용하기
새 기능을 만들 때는 main 브랜치에서 직접 작업하지 않고, 새 브랜치를 만들어 거기서 작업한 뒤 나중에 합치는 것이 좋습니다. 주방에서 새 메뉴를 테스트할 때 손님에게 내놓는 식당 메뉴에 바로 추가하지 않고, 별도 레시피 노트에서 시험하는 것과 같습니다.
브랜치 만들기와 이동
# 새 브랜치 만들고 이동 (feat/ 접두사 관례)
git checkout -b feat/user-profile
# 작업 후 커밋
git add .
git commit -m "feat: 사용자 프로필 페이지 추가"
# GitHub에 브랜치 올리기
git push origin feat/user-profile
# 이후 GitHub에서 Pull Request 생성 버튼 클릭
터미널이 불편하다면 GitHub Desktop이나 VS Code의 Source Control 탭을 쓰면 버튼 클릭만으로 commit, push, branch 전환을 할 수 있습니다. Git의 개념만 알아도 GUI 도구는 쉽게 쓸 수 있습니다.
바이브코딩할 때: AI가 코드를 크게 수정하기 전에 먼저 'git commit'으로 현재 상태를 저장해 두면, AI가 뭔가 잘못 만들더라도 언제든 되돌릴 수 있습니다. 'git stash'를 쓰면 변경사항을 임시 보관했다가 복원할 수도 있습니다.