dev.syw

버전 관리의 필요성부터 Git의 스냅샷·커밋 개념, 분산 버전 관리, GitHub과의 관계까지 한눈에 살펴본다.

Git이란 무엇인가

코드를 짜다 보면 "어제는 잘 됐는데 오늘 망가졌다", "이전 버전으로 돌아가고 싶다", "동료와 같은 파일을 동시에 고쳤다" 같은 문제를 만납니다. Git은 이런 문제를 해결하기 위한 도구입니다. 파일의 변경 이력을 기록하고, 원하는 시점으로 되돌리고, 여러 사람의 작업을 합쳐 줍니다.

학습 목표

  • 버전 관리가 왜 필요한지 이해한다.
  • Git이 변경을 스냅샷으로 저장하고 커밋으로 기록한다는 개념을 안다.
  • 분산 버전 관리의 의미를 파악한다.
  • Git과 GitHub의 관계를 구분한다.

버전 관리가 필요한 이유

버전 관리 없이 작업하면 보통 이렇게 됩니다.

보고서.txt
보고서_수정.txt
보고서_최종.txt
보고서_진짜최종.txt
보고서_최종_v2.txt

어떤 파일이 진짜 최신인지, 무엇이 바뀌었는지 알 수 없습니다. 버전 관리 시스템(VCS)은 이 모든 변화를 하나의 저장소 안에서 시간순으로 기록합니다. 그래서 우리는 다음을 할 수 있습니다.

  • 언제, 누가, 무엇을, 왜 바꿨는지 추적
  • 특정 시점으로 되돌리기
  • 여러 사람의 변경을 안전하게 합치기

Git의 개념: 스냅샷과 커밋

다른 버전 관리 도구가 "파일의 변경분(diff)"을 저장하는 것과 달리, Git은 매 시점의 스냅샷(snapshot) — 즉 그 순간 프로젝트 전체의 상태 — 를 저장합니다. 바뀌지 않은 파일은 이전 스냅샷을 그대로 가리키므로 효율적입니다.

이 스냅샷을 기록하는 단위가 커밋(commit) 입니다. 커밋 하나는 "여기까지의 상태를 한 장면으로 저장한다"는 의미이며, 각 커밋에는 다음이 담깁니다.

  • 그 시점의 프로젝트 스냅샷
  • 작성자와 시각
  • 변경 이유를 적은 메시지
  • 이전 커밋을 가리키는 연결(부모)

커밋이 부모를 가리키며 사슬처럼 이어지므로, 우리는 프로젝트의 역사를 시간순으로 거슬러 올라갈 수 있습니다.

분산 버전 관리

Git은 분산(distributed) 버전 관리 시스템입니다. 중앙 서버에만 이력이 있는 방식과 달리, Git은 저장소를 복제(clone)하면 전체 이력을 내 컴퓨터에 그대로 가져옵니다.

# 저장소를 통째로(이력까지) 복제한다
git clone https://github.com/user/project.git

그래서 분산 방식은 이런 장점이 있습니다.

  • 인터넷이 끊겨도 커밋·이력 조회 같은 작업을 로컬에서 그대로 할 수 있다.
  • 서버 한 대에 문제가 생겨도 각자의 복제본에 전체 이력이 남아 있다.
  • 작업은 로컬에서 하고, 공유할 때만 원격과 주고받는다.

Git과 GitHub의 관계

자주 헷갈리는 부분입니다. 둘은 다른 것입니다.

  • Git — 내 컴퓨터에서 동작하는 버전 관리 도구(소프트웨어).
  • GitHub — Git 저장소를 인터넷에 올려 두고 공유·협업하는 웹 서비스.

즉 Git이 있어야 GitHub를 쓸 수 있지만, Git만으로도(로컬에서) 버전 관리는 충분히 가능합니다. GitHub 외에도 GitLab, Bitbucket 같은 비슷한 서비스가 있습니다. 이 강좌에서는 Git을 먼저 익히고, 뒤쪽에서 GitHub로 협업하는 법을 다룹니다.

[내 컴퓨터: Git]  ── push/pull ──  [GitHub: 원격 저장소]
   로컬 작업·커밋                     공유·협업·백업

요약

Git은 프로젝트의 변경 이력을 스냅샷 단위의 커밋으로 기록하는 분산 버전 관리 도구입니다. 덕분에 되돌리기, 추적, 협업이 쉬워집니다. GitHub는 그 Git 저장소를 온라인에서 공유하는 서비스로, Git 자체와는 구분해서 이해하면 됩니다. 다음 강좌부터 설치와 첫 저장소 만들기를 직접 해 봅니다.

함께 보면 좋은 자료

📚 레퍼런스

댓글 0

Git & GitHub강좌에 대한 댓글입니다.

댓글을 작성하려면 로그인이 필요합니다.