Git이란 무엇인가? 버전 관리 시스템 개념부터 기초 명령어까지
Git은 코드 변경 이력을 추적하고, 여러 사람이 동시에 협업할 수 있게 해주는 분산 버전 관리 시스템이다.
이 글은 개발을 처음 시작하는 입문자와 Git 명령어가 낯선 취업 준비생을 대상으로 작성되었다. Git은 현대 소프트웨어 개발에서 필수 도구로, Stack Overflow 2025년 설문에서 개발자의 93.4%가 사용한다고 응답했다.
Git이란 무엇인가?
Git은 분산 버전 관리 시스템(DVCS, Distributed Version Control System)이다. 파일의 변경 이력을 시간 순으로 기록하여, 이전 상태로 되돌리거나 특정 시점의 코드를 확인할 수 있다.
2005년 리눅스 창시자 리누스 토르발즈(Linus Torvalds)가 Linux 커널 개발을 위해 만들었다. 기존 중앙 집중식 버전 관리(SVN 등)와 달리, 각 개발자가 전체 저장소의 완전한 복사본을 갖는 분산 방식을 채택했다.
버전 관리가 왜 필요한가?
코드를 작성하다 보면 이런 상황이 생긴다:
- "어제 잘 되던 기능이 갑자기 안 된다. 무엇을 바꿨지?"
- "기능 A를 개발 중인데, 긴급 버그 수정도 해야 한다"
- "팀원 3명이 같은 파일을 동시에 수정했다"
Git은 이런 문제를 해결한다. 모든 변경사항이 기록되고, 언제든 이전 상태로 돌아갈 수 있으며, 여러 사람의 변경사항을 체계적으로 합칠 수 있다.
Git의 핵심 개념
저장소 (Repository)
프로젝트 파일과 변경 이력이 저장되는 공간이다. 로컬 저장소(내 컴퓨터)와 원격 저장소(GitHub 등 서버)로 나뉜다.
커밋 (Commit)
변경사항을 저장소에 기록하는 행위다. 각 커밋에는 무엇을 바꿨는지, 누가 바꿨는지, 언제 바꿨는지가 기록된다. "코드의 스냅샷"이라 이해하면 쉽다.
브랜치 (Branch)
독립적인 작업 공간이다. 기본 브랜치(main 또는 master)에서 새 브랜치를 만들어 기능을 개발하고, 완성되면 다시 합친다(머지).
예를 들어, main 브랜치는 운영 중인 코드, feature/login 브랜치는 로그인 기능 개발 중인 코드처럼 분리할 수 있다.
머지 (Merge)
두 브랜치를 하나로 합치는 과정이다. 두 개발자가 각자의 브랜치에서 작업한 결과를 합칠 때 사용한다.
스테이징 영역 (Staging Area)
커밋 전 변경사항을 모아두는 임시 공간이다. git add 명령어로 스테이징 영역에 추가한 파일만 커밋된다.
Git 기본 명령어 정리
| 명령어 | 설명 |
|---|---|
git init | 현재 폴더를 Git 저장소로 초기화 |
git clone <URL> | 원격 저장소를 로컬에 복사 |
git status | 현재 변경사항 상태 확인 |
git add <파일> | 스테이징 영역에 파일 추가 |
git commit -m "메시지" | 스테이징된 파일 커밋 |
git push | 로컬 커밋을 원격 저장소에 전송 |
git pull | 원격 저장소의 변경사항을 로컬에 적용 |
git branch | 브랜치 목록 확인 |
git checkout -b <이름> | 새 브랜치 생성 후 전환 |
git merge <브랜치> | 지정한 브랜치를 현재 브랜치에 합침 |
git log | 커밋 이력 확인 |
중앙 집중식 vs 분산 버전 관리
| 구분 | 중앙 집중식 (SVN) | 분산 (Git) |
|---|---|---|
| 저장 방식 | 중앙 서버에만 이력 저장 | 각 개발자가 전체 이력 보유 |
| 오프라인 작업 | 불가 | 가능 |
| 서버 장애 시 | 작업 중단 | 계속 작업 가능 |
| 브랜칭 속도 | 느림 | 매우 빠름 |
| 협업 방식 | 단순 | 유연 (PR, 포크 등) |
따라서 현재 대부분의 기업과 오픈소스 프로젝트는 Git을 표준으로 사용하고, SVN은 레거시 시스템에서만 사용된다.
Git 브랜치 전략
실무에서는 브랜치를 체계적으로 관리하는 전략을 사용한다:
- Git Flow:
main→develop→feature브랜치 구조. 복잡하지만 대규모 프로젝트에 적합 - GitHub Flow:
main+feature브랜치만 사용. 단순하고 빠른 배포에 적합 - Trunk-Based Development: 하나의 브랜치에서 작은 변경사항을 자주 합침. CI/CD와 잘 맞음
당근마켓, 토스 등 국내 스타트업은 대부분 GitHub Flow나 Trunk-Based 방식을 사용한다.
자주 묻는 질문 (FAQ)
Q1. Git과 GitHub는 같은 건가요? A. 다르다. Git은 버전 관리 소프트웨어이고, GitHub는 Git 저장소를 온라인에서 관리하는 웹 서비스다. Git은 로컬에서도 사용할 수 있지만, GitHub는 협업과 코드 공유를 위한 플랫폼이다.
Q2. 커밋 메시지는 어떻게 써야 하나요? A. 영어로 현재형 동사로 시작하는 것이 관례다. "feat: 로그인 기능 추가", "fix: 버튼 클릭 오류 수정" 같은 Conventional Commits 형식을 많이 사용한다.
Q3. 실수로 잘못 커밋했을 때 어떻게 하나요?
A. git reset HEAD~1로 마지막 커밋을 취소하거나, git revert <커밋ID>로 해당 커밋의 반대 커밋을 만들어 되돌릴 수 있다.
Q4. 브랜치를 얼마나 자주 만들어야 하나요? A. 새로운 기능이나 버그 수정을 시작할 때마다 브랜치를 만드는 것이 좋다. 브랜치 생성과 삭제는 가볍고 빠르므로 적극적으로 활용하는 것이 권장된다.
Q5. Git을 처음 배울 때 가장 중요한 명령어는 무엇인가요?
A. git add, git commit, git push, git pull 4가지가 기본이다. 이 4개만 익혀도 기본 버전 관리와 팀 협업이 가능하다.