한 줄 정의

파일의 변경 이력을 기록하고 여러 버전의 코드를 효율적으로 관리할 수 있게 해주는 분산 버전 관리 시스템


1. 비유로 이해하기

Git은 문서의 수정 이력을 하나하나 저장해두는 ‘버전 기록장’이라고 생각하면 이해하기 쉽다.

예를 들어 혼자 문서를 작성하다 보면 이런 일이 생긴다.

최종본.docx
최종본_수정.docx
최종본_진짜최종.docx
최종본_진짜최종_수정.docx

어느 순간 어떤 파일이 최신인지, 무엇이 바뀌었는지 알기 어려워진다.

Git을 사용하면 파일을 이런 식으로 여러 개 복사해 관리하지 않고, 하나의 프로젝트 안에서 변경 내용을 기록하면서 원하는 시점의 상태를 확인할 수 있다.

예를 들어 코드를 수정한 뒤 하나의 변경 단위를 커밋(commit)으로 기록하면,

작업 → 변경 내용 기록 → 다음 작업 → 또 기록

처럼 프로젝트의 역사가 쌓인다.

그리고 문제가 생겼을 때 과거의 변경 내용을 살펴보거나 특정 시점의 상태로 되돌릴 수도 있다.

또 Git은 분산 버전 관리 시스템이기 때문에 프로젝트의 전체 변경 이력을 개발자의 컴퓨터에도 저장할 수 있다. 그래서 단순히 중앙 서버에 있는 파일 하나를 함께 수정하는 것과는 다른 방식으로 협업할 수 있다.


2. 왜 필요한가

개발에서는 코드가 계속 바뀐다.

기능을 추가하고, 버그를 수정하고, 다시 수정하고, 여러 사람이 동시에 작업하기도 한다.

Git이 없으면 다음과 같은 문제가 생기기 쉽다.

  • 누가 무엇을 수정했는지 알기 어렵다.
  • 문제가 생겼을 때 이전 상태로 돌아가기 어렵다.
  • 여러 사람이 같은 파일을 수정할 때 변경 내용을 관리하기 어렵다.
  • 실험적인 코드를 기존 코드와 안전하게 분리하기 어렵다.

Git을 사용하면 변경 이력을 기록하고, 작업을 분리하고, 서로 다른 변경 내용을 비교하고, 필요한 경우 과거 상태를 확인할 수 있다.

GitHub와 함께 사용하면 다른 사람과 코드를 공유하고 협업하는 과정도 편리해진다.

다만 Git과 GitHub는 같은 것이 아니다.

Git은 버전 관리를 위한 도구이고, GitHub는 Git 저장소를 인터넷에서 호스팅하고 협업 기능을 제공하는 서비스다.


3. 어디서 만났나

AI 에이전트 수업 2회차에서 Git을 처음 제대로 접했다.

2회차 — Node.js 설치와 개발환경 설정

이때 Git을 단순히 코드를 올리는 도구로만 보는 것이 아니라, 프로젝트의 변경 이력을 기록하고 관리하는 버전 관리 시스템으로 이해하게 되었다.


4. 헷갈리는 개념

이 용어 비슷하지만 다른 것 차이
Git GitHub Git은 버전 관리 시스템이고, GitHub는 Git 저장소를 원격으로 저장하고 협업할 수 있게 해주는 서비스다.
Git 저장소(Repository) Git은 버전 관리를 수행하는 도구이고, 저장소는 프로젝트의 파일과 Git의 변경 이력 등이 관리되는 공간이다.
Git 커밋(Commit) Git은 전체 버전 관리 시스템이고, 커밋은 Git 안에서 특정 시점의 변경 내용을 기록하는 작업이다.
Git 브랜치(Branch) Git은 버전을 관리하는 전체 도구이고, 브랜치는 독립적으로 작업하기 위해 프로젝트의 변경 흐름을 나누는 기능이다.

5. 많이들 오해하는 지점

Git과 GitHub는 같은 것이다?

처음 Git을 배우면 GitHub를 Git 자체라고 생각하기 쉽다.

하지만 둘은 다르다.

Git은 컴퓨터에서 실행되는 버전 관리 도구이고, GitHub는 Git 저장소를 원격에서 관리하고 다른 사람과 협업할 수 있도록 만들어진 플랫폼이다.

Git은 단순한 백업 프로그램이다?

변경 내용을 저장한다는 점 때문에 Git을 파일 백업 도구라고 생각하기 쉽다.

하지만 Git의 핵심은 단순히 파일을 복사해 보관하는 것이 아니라 무엇이 언제 어떻게 변경되었는지 기록하고, 그 변경 이력을 비교하고 관리하는 것이다.

Git을 쓰면 자동으로 GitHub에 코드가 올라간다?

Git에 커밋을 만들었다고 해서 원격 GitHub 저장소에 자동으로 반영되는 것은 아니다.

로컬 저장소에서 만든 변경 내용을 원격 저장소에 보내려면 별도의 push 과정이 필요하다.

반대로 원격 저장소의 변경 내용을 가져오는 과정에는 pull 등이 사용된다.


6. 관련 용어

저장소 · 커밋 · 푸시와 풀 · diff · 포크 · Pull Request