Git이란 무엇인가? 버전 관리 시스템 개념부터 기초 명령어까지

2 조회

Git은 코드 변경 이력을 추적하고, 여러 사람이 동시에 협업할 수 있게 해주는 분산 버전 관리 시스템이다.

이 글은 개발을 처음 시작하는 입문자와 Git 명령어가 낯선 취업 준비생을 대상으로 작성되었다. Git은 현대 소프트웨어 개발에서 필수 도구로, Stack Overflow 2025년 설문에서 개발자의 93.4%가 사용한다고 응답했다.

Git 버전 관리

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 기본 명령어 정리

명령어설명
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: maindevelopfeature 브랜치 구조. 복잡하지만 대규모 프로젝트에 적합
  • 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개만 익혀도 기본 버전 관리와 팀 협업이 가능하다.

공유