Git과 GitHub 차이, 초보자가 30분 만에 이해하는 버전 관리의 모든 것 !!
코드를 짜다 보면 "예전 상태로 돌아가고 싶다"는 순간이 반드시 옵니다. 이 글은 비전공자도 이해할 수 있도록 git이 무엇인지, GitHub와 무엇이 다른지, 핵심 기능인 커밋과 태그는 어떻게 활용하는지를 실제 대화 흐름 그대로 풀어냅니다.

Git이란 무엇인가요?
Git은 내 컴퓨터에서 파일의 변경 이력을 기록하고 관리하는 프로그램입니다. 쉽게 말해 "코드 전용 무한 되돌리기" 도구입니다.
우리가 워드 문서를 작업할 때 "다른 이름으로 저장"을 반복하면 보고서_최종.doc, 보고서_최종_진짜최종.doc, 보고서_최종_이게진짜.doc 같은 파일이 쌓입니다. 누가 봐도 비효율적이죠. git은 이 문제를 깔끔하게 해결합니다. 파일은 하나만 두되, 각 시점의 상태를 내부에 차곡차곡 사진처럼 저장해 둡니다. 그리고 언제든 원하는 시점으로 되돌아갈 수 있습니다.
GitHub란 무엇인가요?
GitHub는 git으로 관리하는 프로젝트를 인터넷에 올려 백업하고 공유하는 웹사이트입니다. git이 도구라면, GitHub는 그 결과물을 보관하는 온라인 창고입니다.
여기서 가장 많이 헷갈리는 부분이 정리됩니다. 이름이 비슷해서 같은 것으로 오해하기 쉽지만, 둘은 역할이 완전히 다릅니다.
Git과 GitHub의 차이는 무엇인가요?
핵심만 말하면, git은 내 PC에서 작동하는 프로그램이고 GitHub는 그 기록을 올려두는 인터넷 서비스입니다. 카메라와 클라우드의 관계와 같습니다.
- Git = 카메라 : 내 손 안에서 사진(커밋)을 찍습니다. 인터넷이 없어도 작동합니다.
- GitHub = 클라우드 앨범 : 찍은 사진을 인터넷에 올려 백업하고 다른 사람과 공유합니다.
카메라만 있어도 사진은 얼마든지 찍힙니다. 클라우드는 백업이나 공유가 필요할 때 추가로 쓰는 것뿐입니다. 마찬가지로 git만 있어도 버전 관리와 되돌리기는 완벽하게 됩니다. GitHub 없이도 전혀 문제가 없습니다.
| 항목 | Git | GitHub |
| 정체 | 버전 관리 프로그램 | git 저장소를 올리는 웹 서비스 |
| 작동 위치 | 내 PC (.git 폴더) | 인터넷 (github.com) |
| 인터넷 필요 여부 | 필요 없음 | 필요함 |
| 비용 | 완전 무료 | 공개 저장소 무료, 비공개 일부 유료 |
커밋을 남기면 어디에 저장되나요?
커밋은 프로젝트 폴더 안에 숨겨진 .git 폴더에 저장됩니다. 100% 내 컴퓨터 안이며, 인터넷으로 나가지 않습니다.
예를 들어 프로젝트가 D:\myproject 라면 구조는 이렇습니다.
D:\myproject\
├── app.py
├── index.html
└── .git\ ← 모든 커밋과 이력이 여기 저장됨 (숨김 폴더)
git init 명령을 실행하는 순간 이 .git 폴더가 생성됩니다. 그리고 커밋할 때마다 그 시점의 파일 스냅샷이 이 안에 쌓입니다. 이 폴더 하나가 사실상 "저장소(repository)" 그 자체입니다.
- 인터넷이 필요 없습니다. 비행기 안에서도 커밋이 됩니다.
- 외부로 전송되지 않습니다. GitHub 같은 곳으로는 push라는 별도 명령을 실행해야만 올라갑니다.
- .git 폴더를 지우면 모든 이력이 사라집니다. 폴더째 삭제할 때 특히 조심해야 합니다.
🔍 Git 커밋(Commit) 완벽 이해: 내 코드의 '세이브 포인트' 만들기
커밋은 게임의 '세이브 포인트(저장 지점)'와 같습니다. 보스전을 치르기 전에 저장을 해두면, 게임 오버가 되어도 그 시점부터 다시 시작할 수 있는 것과 완벽히 같은 원리입니다.
# 1. 이 폴더를 git으로 관리 시작 (최초 1회)
git init
# 2. 현재 모든 변경을 저장 대상으로 등록 (장바구니에 담기)
git add -A
# 3. 현재 상태를 하나의 시점(커밋)으로 결제(저장)
git commit -m "로그인 기능 추가"
좋은 커밋 메시지를 작성하는 팁
나중에 "어느 시점으로 되돌아가야 할지" 찾으려면 커밋 메시지(설명)가 명확해야 합니다. 실무에서는 보통 '머리말'을 달아 목적을 분명히 합니다.
| 나쁜 예 (무엇을 했는지 알 수 없음) | 좋은 예 (목적과 내용이 명확함) | 머리말 규칙 (관례) |
| 수정함 | fix: 로그인 버튼 클릭 시 에러 나는 현상 수정 | fix: (버그 수정) |
| 진짜 최종 테스트 | feat: 카카오톡 소셜 로그인 기능 추가 | feat: (새로운 기능) |
| ㅇㅇㅇ | docs: README.md 사용 설명서 업데이트 | docs: (문서 수정) |
🏷️ Git 태그(Tag) 완벽 활용법: 중요한 커밋에 '이정표' 세우기
커밋을 남기면 7b84e40 처럼 암호 같은 고유 ID가 부여됩니다. 하지만 수백 개의 커밋 중에서 "정식 출시 버전"이나 "대대적인 리뉴얼 직전"을 이 암호만 보고 찾기는 불가능합니다.
이때 사용하는 것이 태그(Tag)입니다. 복잡한 커밋 ID 대신 알아보기 쉬운 이름표(이정표)를 찰칵 붙여두는 기능입니다.
1. 태그 붙이기 (보통 버전 관리용으로 사용)
주로 v(버전) 형태의 규칙을 많이 사용합니다.
# 현재 가장 최신 커밋에 'v1.0.0' 이라는 이름표를 붙임
git tag v1.0.0
# 설명까지 덧붙여서 꼼꼼하게 태그 붙이기 (-a는 annotated, -m은 메시지)
git tag -a v1.1.0 -m "결제 기능이 포함된 첫 정식 배포 버전"
2. 만들어둔 태그 확인하기
# 전체 태그 목록 보기
git tag
# 출력 결과: v1.0.0, v1.1.0 ...
3. 태그를 이용해 과거로 시간 여행하기
태그를 붙여두면, 복잡한 커밋 ID를 찾을 필요 없이 직관적인 이름으로 즉시 되돌아갈 수 있습니다.
# 'v1.0.0' 상태로 내 폴더의 파일들을 강제 되돌리기
git reset --hard v1.0.0
💡 요약: 커밋은 "일상적인 자동 저장"이라면, 태그는 "v1, v2처럼 남들에게 발표할 수 있는 중요한 기준점"에 찍는 굵은 마커 펜입니다.
예전 상태로 되돌리려면 어떻게 하나요?
되돌리기는 git의 가장 강력한 기능이며, 커밋을 남겨둔 시점이라면 언제든 그 순간으로 복귀할 수 있습니다.
| 상황 | 명령 | 설명 |
| 방금 한 수정을 취소하고 마지막 커밋 상태로 | git restore . | 저장 안 한 변경만 되돌림 |
| 특정 시점(커밋/태그)으로 완전히 되돌리기 | git reset --hard 커밋ID(또는 태그명) | 그 시점 상태로 강제 복원 |
| 그 시점을 구경만 하기 | git checkout 커밋ID(또는 태그명) | 읽기 전용으로 둘러봄 |
여기서 핵심 전제가 있습니다. 되돌릴 수 있는 시점은 오직 "커밋을 남겨둔 시점"뿐입니다. 커밋하지 않은 상태는 git이 기억하지 못하므로 되돌릴 수도 없습니다.
클로드(Claude)의 대화 분기(Fork) 기능과 Git은 어떻게 다를까요?
최근 AI를 활용해 코딩하다 보면, 특정 대화 시점에서 '분기(Fork)' 기능을 사용하는 경우가 많습니다. "여기서부터는 다른 구조로 짜달라고 해볼까?" 할 때 매우 유용하죠. 하지만 이 기능을 Git의 버전 관리와 혼동해서는 안 됩니다.
- 클로드의 Fork (대화 맥락 분기) : 특정 시점의 대화 내용을 복사해 새로운 채팅방을 만듭니다. 코딩의 방향성이나 아이디어를 테스트하기 위해 사용합니다. (내 PC의 파일은 변하지 않음)
- Git (실제 파일 관리) : 내 PC에 저장된 실제 코드 파일의 상태를 보존하고 되돌립니다.
즉, 대화 세션을 분기(Fork)한다고 해서 내 로컬 컴퓨터의 파일 자체가 예전 상태로 마법처럼 되돌아가는 것은 아닙니다.
가장 안전하고 완벽한 방식은 둘을 함께 쓰는 것입니다. 클로드에서 Fork를 통해 코드의 방향을 크게 틀기 직전에, 내 컴퓨터에서는 git commit과 git tag를 남겨두세요. 그러면 AI와의 대화 맥락도, 내 PC의 실제 코드도 원할 때 언제든 어긋남 없이 되돌릴 수 있습니다.
자주 묻는 질문 (FAQ)
Q. git을 쓰면 인터넷이 꼭 필요한가요?
아니요. git은 전적으로 내 PC의 .git 폴더에서 작동합니다. 인터넷은 GitHub 같은 외부 서비스에 백업할 때만 필요합니다.
Q. GitHub를 안 쓰면 git을 못 쓰나요?
전혀 그렇지 않습니다. git만으로 버전 관리와 되돌리기가 완벽하게 됩니다.
Q. 커밋한 내용이 외부로 새어나가지 않나요?
push 명령을 직접 실행하기 전까지는 모든 커밋이 내 PC에만 머뭅니다. 자동으로 외부로 전송되는 일은 절대 없습니다.
Q. 실수로 파일을 다 지웠는데 커밋이 있다면 살릴 수 있나요?
네. 커밋해 둔 시점이 있다면 git reset --hard 또는 git restore . 로 복원할 수 있습니다. 단 숨김 폴더인 .git 폴더 자체가 삭제되지 않았어야 합니다.
정리: 오늘 기억해야 할 핵심
- Git은 내 PC의 버전 관리 프로그램, GitHub는 인터넷 백업 창고입니다. 이름은 비슷해도 역할은 완전히 다릅니다.
- 커밋(Commit)은 세이브 포인트, 태그(Tag)는 이정표입니다. 중요한 작업 전에는 커밋을 남기고, 큰 변화가 완료되었을 때는 알아보기 쉬운 태그(예: v1.0)를 달아두세요.
- 코드 되돌리기는 오직 Git으로만 가능합니다. AI의 Fork 기능은 대화의 흐름만 나눌 뿐이므로, 반드시 내 PC에서 Git을 함께 사용해야 안전합니다.
Git은 처음엔 낯설지만, 명령 몇 개만 익히면 "언제든 안전하게 되돌릴 수 있다"는 안정감이 작업 방식을 완전히 바꿔 놓습니다. 오늘 당장 작업 폴더에서 git init 한 줄로 시작해 보세요.
'AI & 코딩' 카테고리의 다른 글
| Claude Code의 Fork 기능과 Git 연동을 통한 완벽한 AI 개발 워크플로우 가이드 (0) | 2026.06.19 |
|---|---|
| [바이브 코딩 초보자를 위한 Git 기초 완벽 가이드] 폴더 관리부터 init, add, commit의 진짜 의미와 로그 확인법까지 (0) | 2026.06.19 |
| 클로드 코드 AI 코딩의 마법, '포크(Fork)' 기능 완벽 가이드: 바이브 코딩 시 원본 코드를 지키는 비결 (0) | 2026.06.17 |
| AI 기억력 전쟁의 승자는? 클로드 코드, 마누스, 제미나이, 챗GPT 컨텍스트 창 완벽 비교 분석 (0) | 2026.06.17 |
| 100만 토큰의 시대: 클로드(Claude) 버전별 컨텍스트 창 완벽 해부 (0) | 2026.06.17 |