[Git] Git과 GitHub는 무엇이 다른가? (로컬과 원격 저장소의 개념)

Git을 처음 접하는 많은 사람이 Git과 GitHub를 동일하거나 서로 대체 가능한 것으로 혼동합니다. 하지만 이 둘은 명확히 다른 개념이며, 현대 개발에서 각기 다른 핵심적인 역할을 수행합니다.

간단히 정의하면, Git은 버전 관리를 수행하는 **소프트웨어(도구)**이며, GitHub는 Git으로 관리하는 프로젝트를 저장하고 공유하는 **웹 서비스(플랫폼)**입니다.


## Git: 로컬 저장소 (The Tool)

Git은 이전 글에서 설명했듯이, 내 컴퓨터에 설치하여 사용하는 **분산 버전 관리 시스템(DVCS)**입니다.

  • 역할: 코드의 변경 이력(버전)을 생성하고, 브랜치를 만들어 작업을 분기하며, 과거의 특정 시점으로 코드를 되돌리는 등 모든 버전 관리 작업을 직접 수행합니다.
  • 저장소: 로컬 저장소(Local Repository).
  • 동작: git init이나 git clone 명령어를 실행하면, 프로젝트의 모든 변경 이력을 포함한 완전한 저장소가 사용자의 로컬 컴퓨터 .git 폴더 내에 생성됩니다.
  • 특징: 인터넷 연결 없이도 커밋, 브랜치 생성, 이력 조회 등 거의 모든 작업을 오프라인 상태에서 수행할 수 있습니다.

## GitHub: 원격 저장소 (The Service)

GitHub는 Git 저장소를 **클라우드에 저장(호스팅)**해주는 웹 기반 서비스입니다. Git이라는 도구를 사용하여 관리되는 프로젝트들의 온라인 보금자리라고 할 수 있습니다.

  • 역할: 내 로컬 컴퓨터에 저장된 Git 저장소를 업로드하여 백업하고, 다른 개발자들과 공유 및 협업할 수 있는 중앙 거점을 제공합니다.
  • 저장소: 원격 저장소(Remote Repository).
  • 동작: 개발자는 자신의 로컬 저장소에서 작업한 내용을 git push 명령어를 통해 GitHub의 원격 저장소로 업로드하고, 다른 개발자의 변경 사항을 git pull 명령어로 내려받습니다.
  • 부가 기능: GitHub는 단순한 저장소 호스팅을 넘어, 협업을 위한 강력한 부가 기능들을 제공합니다.
    • Pull Requests: 코드 변경 사항을 리뷰하고 병합하기 위한 기능
    • Issues: 버그 추적 및 작업 관리
    • Actions: 코드 빌드, 테스트, 배포 자동화(CI/CD)
    • Wiki: 프로젝트 문서화

## 쉬운 비유: 워드프로세서와 클라우드 스토리지

이 관계를 문서 작업에 비유하면 다음과 같습니다.

  • Git: Microsoft Word나 한/글 같은 워드프로세서 소프트웨어입니다. 문서를 작성하고, 수정하고, 변경 이력을 추적하는 도구입니다.
  • GitHub: Google Drive나 OneDrive 같은 클라우드 스토리지 서비스입니다. 워드프로세서로 작성한 문서 파일을 업로드하여 저장, 백업, 공유, 공동 편집하는 플랫폼입니다.

워드프로세서(Git)만 있어도 문서를 작성할 수 있지만(로컬에서만 작업), 이를 공유하고 협업하려면 클라우드 서비스(GitHub)가 필요한 것과 같습니다.


## 요약 비교

구분GitGitHub
유형소프트웨어 (분산 버전 관리 시스템)웹 서비스 (Git 저장소 호스팅 플랫폼)
설치 위치로컬 컴퓨터클라우드 (웹 브라우저로 접속)
주요 목적버전 관리, 변경 이력 추적코드 호스팅, 협업, 백업, 코드 리뷰
저장소로컬 저장소 (Local Repository)원격 저장소 (Remote Repository)
사용 관계GitHub 없이 단독 사용 가능Git 저장소를 호스팅하므로 Git 없이는 무의미

결론적으로, Git은 버전 관리를 가능하게 하는 핵심 엔진이며, GitHub는 이 엔진을 활용하여 팀이 함께 일할 수 있도록 돕는 협업 플랫폼입니다.