Git 배우는 법: 학습 계획, 연습 도구, 문서, 실습
Git 공부는 네 단계로 나누면 효과적입니다. 기본 흐름(init, add, commit, log), 브랜치와 병합, 원격 저장소와 협업, 그리고 실수 되돌리기와 고급 도구입니다. 실무에서 편하게 쓸 수준이 되려면 자기 저장소에서 2~4주 정도 꾸준히 연습하는 것이 보통입니다.
Git은 글을 읽어서가 아니라 직접 손으로 해 보면서 배웁니다. 팀에서 자신 있게 일하려면 스무 개 남짓한 명령을 익히고, 세 가지 개념을 이해하면 충분합니다. 커밋은 프로젝트의 스냅샷이고, 브랜치는 커밋을 가리키는 포인터이며, 원격 저장소는 히스토리의 또 다른 사본일 뿐입니다. 아래는 단계별 학습 계획이며, 각 단계마다 연습 과제와 단계를 마쳤다는 기준을 함께 제시합니다.
이 계획은 터미널을 cd와 ls 수준으로라도 다룰 줄 아는 입문자를 대상으로 합니다. 아직 익숙하지 않다면, 먼저 명령줄의 기초를 하루 저녁 정도 공부하세요. 명령줄 없이 Git을 배우면 훨씬 힘듭니다.
Git을 체계적으로 배워야 하는 이유
몇 년 동안 남의 안내문에서 복사한 다섯 개 명령으로 버텨 온 사람들이 많습니다. 첫 충돌이나 "detached HEAD"를 만나면 당황합니다. 원인은 대부분 하나입니다. 명령이 히스토리와 파일에 무엇을 바꾸는지에 대한 mental model이 없기 때문입니다.
체계적으로 배운 Git은 금방 값을 합니다. 실험이 두렵지 않습니다. 되돌리는 방법을 알기 때문입니다. 충돌도 차분하게 해결하고, 리뷰어와 채용 담당자가 보는 깔끔한 히스토리를 만듭니다. Git은 프런트엔드부터 DevOps, 데이터 분석까지 거의 모든 IT 직군의 면접에서 확인하는 주제입니다.
1단계. 기초: 저장소, 인덱스, 커밋
1단계의 목표는 기본 흐름과 Git의 세 영역, 즉 작업 디렉터리, 인덱스, 저장소를 이해하는 것입니다. 시간은 하루 한 시간씩 2~4일 정도입니다.
- 설치와 기본 설정:
git config --global user.name,user.email, 기본 브랜치main. - 저장소 만들기:
git init. git status→git add→git commit흐름. 선택적으로 추가하는git add -p.- 히스토리 보기:
git log --oneline,git diff,git diff --staged,git show. .gitignore파일: 저장소에 들어가면 안 되는 것.
연습 과제. 메모나 작은 스크립트를 위한 저장소를 만드세요. 커밋을 15~20개 하고, 각 커밋은 하나의 논리적 변경이며 메시지는 분명해야 합니다. 명령을 실행할 때마다 git status를 확인하고, 무엇이 바뀌었는지 스스로 설명해 보세요.
단계 완료 기준: 힌트 없이 git diff와 git diff --staged의 차이를 말할 수 있고, 수정한 파일 중 일부만 골라서 커밋할 수 있다면 통과입니다.
2단계. 브랜치와 병합
브랜치는 Git의 심장이며, 초보자가 가장 두려워하는 부분입니다. 여기서는 명령을 외우는 것보다 커밋 그래프를 머릿속에 그릴 수 있게 되는 것이 중요합니다. 약 일주일을 씁니다.
- 만들고 전환하기:
git branch,git switch,git switch -c. - HEAD가 무엇인지, detached HEAD 상태가 무엇인지.
- 병합:
git merge, fast-forward와 병합 커밋,--no-ff옵션. - 충돌:
<<<<<<<와>>>>>>>마커,git merge --abort. - 시각화:
git log --oneline --graph --all.
연습 과제. main에서 브랜치 두 개를 만들고, 각 브랜치에서 같은 파일의 같은 줄을 바꾸세요. 차례로 병합해서 충돌을 만들고 해결하세요. 지루해질 때까지 반복합니다.
이 단계에서는 아래에 소개하는 대화형 연습 도구가 특히 도움이 됩니다. 명령마다 그래프를 보여 주므로 감각을 빨리 쌓을 수 있습니다.
3단계. 원격 저장소와 팀 작업
목표는 실제 팀이 서버와 일하는 방식을 익히는 것입니다. GitHub, GitLab 같은 Git 호스팅 계정이 필요합니다. 약 일주일을 씁니다.
- 연결과 복제:
git remote add,git clone, SSH 키로 로그인. - 동기화:
git push,git push -u,git fetch,git pull과 그 차이. origin/main같은 원격 추적 브랜치.- 포크, 기능 브랜치, 코드 리뷰가 있는 pull request.
- 팀 프로세스: GitHub Flow, Git Flow, trunk-based development.
연습 과제. 한 저장소를 서로 다른 두 폴더에 클론해서, "두 대의 컴퓨터"처럼 쓰세요. 한쪽에서 커밋하고 push하고, 다른 쪽에서 받아 오세요. 서버가 앞서 있어서 push가 거부되는 상황을 일부러 만들고, 왜 그런지 이해하세요.
git clone git@github.com:you/sandbox.git copy-a
git clone git@github.com:you/sandbox.git copy-b
cd copy-a && echo "из A" >> notes.txt && git commit -am "Правка из A" && git push
cd ../copy-b && echo "из B" >> notes.txt && git commit -am "Правка из B"
git push # rejected: сервер ушёл вперёд
git pull # получаем правку A, разрешаем конфликт в notes.txt
git push
이 짧은 시나리오는 팀에서 가장 흔한 상황을 그대로 재현합니다. 각 명령의 출력을 하나씩 읽으세요. push가 왜 거부되었는지, fetch 후 origin/main에 무엇이 생겼는지, 병합 커밋은 어디서 왔는지. 그다음 git pull --rebase로 같은 일을 반복하고, git log --oneline --graph --all로 두 그래프를 비교하세요.
더 좋은 방법은 동료를 찾아서 함께 작은 프로젝트를 pull request로 진행하는 것입니다. 리뷰, 충돌, 브랜치 규칙을 실제로 체감할 수 있습니다.
4단계. 실수 되돌리기
이 단계는 Git을 불안의 원천에서 안전망으로 바꿔 줍니다. 3~5일 정도 걸립니다.
git restore와git restore --staged: 파일과 인덱스에서 되돌리기.git commit --amend: 마지막 커밋 고치기.git reset의--soft,--mixed,--hard모드.git revert: 이미 공개된 커밋을 안전하게 취소하기.git reflog: "잃어버린" 커밋 복구하기.
연습 과제. 커밋을 여러 개 만든 뒤 git reset --hard HEAD~3을 실행하고, reflog로 되살리세요. 공용 브랜치에서 커밋 하나를 revert로 취소하고, 히스토리에 어떻게 남는지 확인하세요.
5단계. 고급 도구
이 도구들은 필요할 때 익히면 되지만, 존재는 미리 알아 두면 좋습니다.
| 도구 | 언제 필요한가 |
|---|---|
git rebase와 git rebase -i | 선형 히스토리, pull request 전 커밋 정리 |
git stash | 끝나지 않은 작업을 커밋하지 않고 급히 전환 |
git cherry-pick | 커밋 하나만 옮기기, 예를 들어 핫픽스 |
git tag | 릴리스 버전 표시 |
git bisect | 코드를 깨뜨린 커밋 찾기 |
git worktree, git submodule | 작업 폴더 여러 개, 저장소 안의 저장소 |
Git 연습 도구: 어디서 연습할까
좋은 연습 도구는 안전한 샌드박스를 주고 결과를 바로 보여 줍니다. 무료로 쓸 수 있는 몇 가지가 있습니다.
- Learn Git Branching(learngitbranching.js.org) — 브랜치에 특화된 최고의 도구입니다. 단계별 과제가 있고, 커밋 그래프가 애니메이션으로 움직이며, 다국어 인터페이스를 지원합니다. commit, branch, merge, rebase, cherry-pick, 대화형 rebase, 원격 저장소 작업까지 다룹니다.
- Oh My Git! — 오픈 소스 무료 게임입니다. Git 명령이 카드로 나오고, 내부에서는 실제 Git이 동작합니다.
- 나만의 샌드박스 저장소 — 가장 과소평가된 도구입니다.
git-sandbox폴더를 만들고 마음껏 망가뜨려 보세요. 잃을 것이 없습니다.
연습 도구는 그래프를 이해하는 데 아주 좋지만, 실제 프로젝트를 대신하지는 못합니다. 실제 파일, 편집기, 코드 충돌, IDE가 없기 때문입니다. 보조 수단으로 쓰세요.
Git 문서와 교재
Git 공식 문서는 git-scm.com에 있습니다. 같은 곳에서 Scott Chacon과 Ben Straub의 책 Pro Git을 무료로 볼 수 있으며, 한국어 번역판도 있습니다. 최고의 Git 교재입니다. 처음 세 장(기초, 브랜치)은 꼭 읽고, "Git 내부 구조" 장은 데이터 모델을 완전히 이해하고 싶을 때 읽으세요.
내장 도움말은 언제나 가까이 있습니다. git help <명령>은 전체 설명서를, git <명령> -h는 옵션 요약을 보여 줍니다. Git 문서는 건조하지만 정확합니다. 검색 결과의 첫 답변 대신 공식 문서와 대조하는 습관을 들이세요.
git help rebase # 전체 설명서
git switch -h # 옵션 요약
git help -g # 개념 가이드 목록(gitworkflows, gittutorial 등)
gittutorial과 giteveryday도 참고하세요. Git 기본 설치에 포함되어 있고 git help로 열립니다.
혼자 배울까, 강의를 들을까
책, 연습 도구, 샌드박스만으로도 Git을 혼자 충분히 배울 수 있습니다. 어려운 점은 다른 데 있습니다. 구조가 없으면 이론에 갇히거나, 반대로 이해 없이 명령만 주워 담게 됩니다. 피드백도 없어서 내 히스토리가 얼마나 지저분한지 아무도 알려 주지 않습니다.
강의는 과정을 빠르고 순서 있게 밟고 싶을 때 유용합니다. 첫 커밋부터 실제 저장소의 pull request까지, 단계마다 과제가 있습니다. 강의를 고를 때는 길이보다 실습 비중을 보세요. 충돌, 실수 되돌리기, 팀 작업, 최종 프로젝트가 있는지가 중요합니다.
얼마나 걸릴까
| 수준 | 할 수 있는 것 | 하루 1시간 기준 기간 |
|---|---|---|
| 기초 | 커밋, 히스토리, .gitignore | 3~5일 |
| 실무 | 브랜치, 충돌, push/pull, pull request | 2~3주 |
| 숙련 | 실수 되돌리기, rebase, reflog, 팀 워크플로 | 실제 프로젝트 경험과 함께 1~2개월 |
위 수치는 대략적인 기준입니다. 결정적인 것은 꾸준함입니다. 매일 한 시간이 주말에 몰아서 하는 마라톤보다 효과적입니다.
Git을 배울 때 흔한 실수
- GUI로만 배우기. 그래픽 클라이언트는 편리하지만 모델을 가립니다. 먼저 명령줄을 이해하고, 그다음에 편한 도구를 고르세요.
- 옵션 외우기. 외워야 할 것은 개념이고, 옵션은 항상
-h에 있습니다. - 망가뜨리기를 두려워함.
reset --hard를 해 보고 복구해 보기 전까지는 Git이 얼마나 나를 지켜 주는지 모릅니다. - 원격 저장소를 건너뜀. push, pull, pull request 없는 로컬 Git은 기술의 절반일 뿐입니다.
- "fix", "update" 같은 커밋 메시지. 의미 있는 메시지를 쓰는 습관은 처음부터 들이는 편이 쉽습니다.
마무리 프로젝트로 점검하기
가장 좋은 점검은 팀 개발을 흉내 내는 것입니다. 저장소를 만들고, main 브랜치에 직접 push를 막고, 동료를 초대하거나 계정 두 개로 작업하세요. 각 과제는 별도의 기능 브랜치와 리뷰가 있는 pull request로 진행합니다. 최소 한 번은 충돌을 일부러 만들고, 한 번은 revert로 잘못된 커밋을 취소하고, 릴리스에는 태그를 다세요.
이런 프로젝트를 마치고 나면 Git은 주문처럼 외우는 명령 모음이 아닙니다. 그래프가 보이고, 명령의 결과가 예측되며, 면접 질문에도 답할 수 있습니다.
정리
효과적인 Git 공부는 순서를 따릅니다. 기본 흐름, 브랜치, 서버와의 작업, 실수 되돌리기, 그다음에 고급 도구입니다. 연습 도구는 그래프를 보여 주고, Pro Git과 공식 문서는 깊이를 주며, 샌드박스와 팀 프로젝트는 지식을 기술로 바꿉니다. 이 강의 Skillaria도 git init부터 마무리 프로젝트의 pull request까지 같은 길을 따라 구성되어 있습니다.
자주 묻는 질문
Git을 하루 만에 배울 수 있나요?
하루면 기본 흐름인 init, add, commit, log, push는 익힐 수 있습니다. 브랜치, 충돌, 실수 되돌리기를 자신 있게 다루려면 몇 주의 연습이 필요합니다.
Git을 배우려면 프로그래밍을 알아야 하나요?
아니요. Git은 어떤 텍스트 파일에도 동작하므로, 메모나 문서로도 배울 수 있습니다. 터미널을 기초 수준으로 다룰 줄만 알면 됩니다.
Git 문서가 한국어로 있나요?
공식 명령 참고서는 git-scm.com에서 영어로 제공됩니다. Pro Git 책은 한국어 번역판이 있으며, Learn Git Branching도 다국어를 지원합니다.
Git 다음에는 무엇을 배우면 좋나요?
CI/CD(GitHub Actions, GitLab CI), 코드 리뷰와 팀 프로세스가 자연스러운 다음 단계입니다. DevOps 쪽이라면 Git에 저장되는 인프라 코드(IaC)도 좋은 선택입니다.