수련  ›  중급 — 서비스로 확장  ›  CH1 / 4
중급 — 서비스로 확장 ⏱ 14분 +180 XP

Git 버전관리 기초

commit으로 작업을 저장하고, push로 공유하고, 실수를 안전하게 되돌리는 흐름을 익힙니다.

정적 사이트를 만들다 보면 "어제 잘 되던 게 망가졌다", "이 파일을 통째로 날렸다" 같은 일이 반드시 생깁니다. 이런 사고를 막아주는 도구가 바로 Git입니다. Git은 코드의 상태를 시점별로 저장하는 버전관리 시스템이고, 한 번 commit한 내용은 언제든 되돌릴 수 있습니다. 이번 챕터에서는 commit, push, 되돌리기라는 세 가지 핵심 동작만 손에 익히겠습니다.

작업 영역 세 칸을 먼저 이해하기

Git의 모든 헷갈림은 "파일이 지금 어느 칸에 있는가"를 모를 때 생깁니다. Git은 파일을 세 칸으로 나눠서 관리합니다.

  • 작업 디렉터리(Working Directory) — 지금 내가 편집하고 있는 실제 파일입니다.
  • 스테이지(Staging Area) — 다음 commit에 포함하겠다고 예약해 둔 변경분입니다. git add로 올립니다.
  • 저장소(Repository)git commit으로 영구 저장된 시점들의 기록입니다.

즉 흐름은 "수정 → git addgit commit" 입니다. add를 거치지 않은 변경은 commit에 들어가지 않는다는 점이 핵심입니다.

# 현재 상태 확인 (가장 자주 쓰는 명령)
git status

# 변경한 파일을 스테이지에 올리기
git add index.html
# 모든 변경을 한꺼번에 올리려면
git add .

# 스테이지에 올린 것을 한 시점으로 저장
git commit -m "메인 페이지 헤더 추가"
commit 메시지는 "무엇을 왜 바꿨는지"를 나중의 내가 읽을 수 있게 적습니다. "수정", "ㅇㅇ" 같은 메시지는 한 달 뒤 아무 도움이 안 됩니다.

push로 원격에 올리기

내 컴퓨터에만 commit하면 다른 사람과 공유되지 않고, 컴퓨터가 고장 나면 사라집니다. GitHub 같은 원격 저장소에 git push로 올려야 백업과 공유가 됩니다.

# 원격 저장소를 처음 연결할 때
git remote add origin https://github.com/내계정/내저장소.git

# 현재 브랜치를 원격 main으로 올리기
git push -u origin main
# 두 번째부터는 그냥
git push

여기서 origin은 원격 저장소의 별명이고, main은 브랜치 이름입니다. -u는 "앞으로 이 브랜치는 origin/main과 짝"이라고 한 번만 기억시키는 옵션입니다.

안전하게 되돌리기

되돌리기에는 여러 방법이 있는데, "무엇을 되돌리는가"에 따라 다릅니다. 초보자가 가장 헷갈리는 부분이라 표로 정리합니다.

상황명령효과
아직 add 안 한 파일 수정을 버림git restore 파일명마지막 commit 상태로 파일 복구
add는 했지만 commit 전, 스테이지에서 내림git restore --staged 파일명스테이지에서만 빼기(수정은 유지)
이미 push한 commit을 안전하게 취소git revert 커밋ID되돌리는 새 commit을 추가
이미 다른 사람과 공유(push)한 기록은 git reset으로 지우지 말고 git revert로 "취소하는 새 commit"을 만드세요. 공유된 역사를 강제로 바꾸면 동료의 작업이 충돌합니다.
git push --force는 원격의 기록을 통째로 덮어씁니다. 협업 중인 브랜치에 함부로 쓰면 남의 commit이 사라질 수 있으니 평소에는 쓰지 않습니다.

정리하면 status로 상태를 확인하고, add → commit으로 시점을 남기고, push로 공유하고, 문제가 생기면 상황에 맞는 되돌리기를 고릅니다. 이 한 사이클을 매일 반복하는 것만으로도 작업이 훨씬 안전해집니다.

이해도 퀴즈

정답 3개 이상 → +180 XP

배운 내용을 확인해 보세요. 4문항 중 60% 이상 맞히면 챕터가 완료되고 경험치가 적립됩니다.

Q1.파일을 수정한 뒤 git commit만 했더니, 그 파일의 변경 내용이 commit에 들어가지 않았습니다. 가장 흔한 원인은?
Q2.이미 GitHub에 push한 commit을 취소해야 할 때 가장 안전한 방법은?
Q3.git push -u origin main 명령에서 origin이 의미하는 것은?
Q4.아직 git add를 하지 않은 파일의 수정 내용을 버리고 마지막 commit 상태로 되돌리려면?