Git은 무엇이고 왜 필요한가
코드를 짜다가 실수해서 이틀 전 상태로 되돌리고 싶다고 해 봅시다. 파일을 매일 따로 복사해 두지 않았다면 방법이 없습니다. 그래서 코드를 다루는 사람들은 버전 관리 소프트웨어를 씁니다. 그중 사실상 표준이 Git입니다. Git을 쓰면 지금 이 코드를 안전하게 기록해 두고, 언제든 그 시점으로 돌아갈 수 있습니다.
장점은 세 가지로 요약됩니다. 실수했을 때 이전 버전으로 되돌릴 수 있고, 지금까지 무슨 작업을 어떤 순서로 했는지 이력을 볼 수 있고, 원본을 망가뜨릴 걱정 없이 새 기능을 실험할 수 있습니다.
바이브 코딩을 시작한 사람이 코드보다 먼저 막히는 곳이 바로 여기입니다. AI가 코드는 다 짜 주는데, 그 코드를 저장하고 되돌리고 갈래를 쳐서 실험하는 일은 여전히 사람 몫이거든요. 다행히 입문자가 알아야 할 건 많지 않습니다. 명령어 몇 개면 시작합니다.
설치와 최초 설정은 어떻게 하나
윈도우는 git-scm.com에서 설치 파일을 내려받아 실행하고, 설치 중 선택지는 기본값 그대로 두고 넘어가면 됩니다. 맥은 Homebrew가 있으면 터미널에 brew install git 한 줄이면 끝입니다. 맥 기본 '터미널' 앱, 윈도우 'PowerShell'을 열어 진행합니다.
설치 후 딱 한 번, 내가 누구인지 등록해야 합니다. 커밋(버전 기록)마다 '누가 남겼는지'가 함께 저장되기 때문입니다. 아이디를 등록한다고 생각하면 됩니다. 아래 두 줄을 한 번만 입력해 두면 그다음부터는 신경 쓸 필요가 없습니다.
# 맥(Homebrew): Git 설치
brew install git
# 윈도우: git-scm.com 에서 설치 파일 다운로드 후 실행
# 최초 1회, 내 신원 등록 (커밋에 기록됨)
git config --global user.name "내 이름"
git config --global user.email "내 이메일"add와 commit — 코드를 버전으로 남기기
먼저 작업 폴더를 하나 만들고 VS Code 같은 에디터로 엽니다. 그 폴더 안에서 터미널을 열어 git init을 치면, 그때부터 Git이 이 폴더를 감시하기 시작합니다. 여기서 파일을 만들고 코드를 쓰는 모든 변화가 추적 대상이 됩니다.
이제 코드가 마음에 들어 이 순간을 기록(백업)하고 싶다면, 두 단계를 거칩니다. 먼저 git add로 기록할 파일을 고르고, git commit으로 그 상태를 버전으로 박아 둡니다. 커밋할 때 -m 뒤에 '무엇을 했는지' 짧은 메시지를 붙입니다. 예: git commit -m "첫 파일 생성".
왜 하필 두 단계일까요. 모든 파일이 버전 기록을 필요로 하지는 않기 때문입니다. 예를 들어 이미지 파일은 내용이 거의 안 바뀌니 굳이 기록할 필요가 없습니다. 그래서 add로 기록할 것만 골라 담고, commit으로 확정하는 구조입니다. 이 골라 담는 중간 공간을 스테이징 영역(staging area), 확정되어 쌓이는 곳을 저장소(repository)라고 부릅니다. add하는 행위를 '스테이징'이라 합니다.
자주 쓰는 보조 명령이 셋 있습니다. git add . 은 폴더의 모든 변경 파일을 한 번에 담고, git status는 지금 무엇이 스테이징됐고 무엇이 수정됐는지 알려 주고, git log는 지금까지 남긴 커밋 이력을 쭉 보여 줍니다. 헷갈릴 때마다 git status를 쳐 보면 됩니다.
# 작업 폴더에서 Git 시작 (최초 1회)
git init
# 기록할 파일 고르기 (스테이징)
git add app.txt
# 또는 변경된 모든 파일을 한 번에
git add .
# 버전으로 확정 (메시지 필수)
git commit -m "첫 파일 생성"
# 현재 상태 확인 / 커밋 이력 보기
git status
git log언제 커밋해야 하나
입문자가 가장 많이 하는 실수가 파일을 저장하듯 시도 때도 없이 커밋하는 것입니다. 그럴 필요 없습니다. 커밋은 저장과 다릅니다.
기준은 '의미 있는 한 덩어리가 완성됐을 때'입니다. 간단한 기능 하나를 추가했으면 커밋, 그 기능을 수정했으면 또 커밋. 이렇게 작업 단위마다 남기면 나중에 이력을 봤을 때 '언제 무엇을 했는지'가 깔끔하게 읽힙니다. 물론 혼자 연습할 때는 부담 갖지 말고 마음대로 해도 됩니다.
변경 확인 — diff와 에디터 GUI
좋은 습관 하나. 커밋하기 전에 '뭐가 바뀌었는지' 한 번 보고 넘어가는 것입니다. 현재 파일을 가장 최근 커밋과 비교해, 의도한 대로만 바뀌었는지 눈으로 확인하고 커밋하면 실수가 줄어듭니다.
터미널에서는 git diff로 최근 커밋과 현재 코드의 차이를 봅니다. 스페이스로 스크롤하고 q로 빠져나옵니다. 특정 커밋과 비교하려면 git log로 커밋 ID를 확인한 뒤 git diff <커밋ID>, 두 커밋 사이를 보려면 git diff <ID1> <ID2>처럼 씁니다. 다만 터미널 diff는 한 창에 좁게 나와 코드가 길면 읽기 힘들고, 엔터나 공백 같은 사소한 변화까지 차이로 잡아 눈이 아픕니다.
그래서 현실적인 답은 에디터 GUI입니다. VS Code 왼쪽의 소스 컨트롤 탭(나뭇잎 모양 아이콘)을 열면, 수정된 파일을 알려 주고 + 버튼으로 스테이징, − 버튼으로 취소, 체크 버튼으로 커밋까지 클릭 몇 번에 끝납니다. GitLens나 Git Graph 같은 확장을 설치하면 커밋 이력과 변경 내용을 그래프로 시각화해 훨씬 편하게 볼 수 있습니다. 터미널을 고집할 이유가 없습니다. 편한 쪽을 쓰면 됩니다.
# 최근 커밋 대비 현재 변경분 보기 (q로 종료)
git diff
# 커밋 이력에서 커밋 ID 확인
git log
# 특정 커밋과 현재 비교 / 두 커밋 사이 비교
git diff <커밋ID>
git diff <ID1> <ID2>
# 비주얼 비교 도구로 열기
git difftoolbranch — 사본을 떠서 안전하게 실험하기
코드를 짜다가 새 기능을 붙이고 싶은데, 원본에 바로 쓰기는 불안합니다. 잘못 짜서 버그가 나거나 프로그램이 깨지면 곤란하니까요. 이럴 때 원본을 안전하게 두고, 사본을 하나 떠서 거기서 먼저 만들어 본 뒤 잘 되면 원본에 합치면 됩니다. 이 사본이 브랜치(branch)입니다. 브랜치는 프로젝트의 갈래친 복사본이라고 생각하면 됩니다.
git branch coupon으로 'coupon'이라는 브랜치를 만들고, git switch coupon으로 그 사본으로 옮겨 갑니다(예전 방식은 git checkout). 우리가 원래 작업하던 코드도 사실은 브랜치이고, 보통 main(환경에 따라 master)이라고 부릅니다. 에디터 상태바를 보면 지금 어느 브랜치에 있는지 나옵니다. coupon 브랜치에서 만든 파일은 main으로 돌아가면 보이지 않습니다. 그만큼 독립적으로, 원본을 건드리지 않고 개발할 수 있다는 뜻입니다.
합칠 때는 먼저 받는 쪽(main)으로 이동한 뒤 git merge coupon으로 사본의 작업을 끌어옵니다. git log --graph --oneline를 치면 브랜치가 어떻게 갈라지고 합쳐졌는지 그래프로 보이고, HEAD는 지금 내 위치를 뜻합니다.
한 가지 주의할 게 충돌(conflict)입니다. 두 브랜치가 같은 파일의 같은 줄을 서로 다르게 고쳤다면, Git은 어느 쪽을 택할지 몰라 병합을 멈추고 충돌을 알립니다. 이땐 사람이 직접 원하는 코드만 남기고 나머지를 지운 뒤 커밋하면 해결됩니다. VS Code는 어느 쪽 코드를 적용할지 버튼으로 골라 주니 훨씬 수월합니다.
브랜치가 진짜 위력을 발휘하는 건 협업입니다. 열 명이 같은 소스 코드를 동시에 고치면 재앙이 납니다. 그래서 각자 자기 브랜치에서 먼저 개발하고, 잘 되면 병합하는 식으로 나눠 일합니다. 혼자 연습할 때도 브랜치를 만들어 커밋하고 다시 병합해 보고, 일부러 충돌을 내서 풀어 보면 감이 빨리 옵니다.
# 'coupon' 브랜치(사본) 만들고 그리로 이동
git branch coupon
git switch coupon # 예전 방식: git checkout coupon
# coupon 에서 작업 후 add · commit
git add .
git commit -m "쿠폰 기능 추가"
# 원본(main)으로 돌아가 사본의 작업을 합치기
git switch main
git merge coupon
# 브랜치 갈래를 그래프로 확인
git log --graph --oneline그래서 뭐부터 하면 되나
외울 명령어는 몇 개뿐입니다. 처음에는 작업 폴더에서 git init 한 번 하고, add와 commit을 반복하며 코드를 계속 기록으로 남기는 것부터 몸에 붙이면 됩니다. 변경 확인(diff)과 브랜치는 개념만 잡고 VS Code의 소스 컨트롤 GUI로 시작해도 충분합니다. 터미널 명령은 익숙해진 다음에 하나씩 늘려도 늦지 않습니다.
핵심은 단순합니다. 코드를 계속 기록으로 남기는 습관, 그리고 언제든 되돌릴 수 있다는 안전감입니다. 되돌릴 수 있으면 겁 없이 실험하게 되고, 실험이 늘수록 바이브 코딩의 결과물도 좋아집니다.
이 정리는 코딩애플의 '쉽게 설명하는 Git 기초' 입문 3부작을 바이브 코딩 입문자 관점에서 재구성한 것입니다. 원본 영상: youtu.be/sly2u8BIi9E (add·commit), youtu.be/xD9GnHKveRk (git diff·에디터), youtu.be/XFm2qNs30BE (branch).