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)가 필요한 것과 같습니다.
## 요약 비교
| 구분 | Git | GitHub |
| 유형 | 소프트웨어 (분산 버전 관리 시스템) | 웹 서비스 (Git 저장소 호스팅 플랫폼) |
| 설치 위치 | 로컬 컴퓨터 | 클라우드 (웹 브라우저로 접속) |
| 주요 목적 | 버전 관리, 변경 이력 추적 | 코드 호스팅, 협업, 백업, 코드 리뷰 |
| 저장소 | 로컬 저장소 (Local Repository) | 원격 저장소 (Remote Repository) |
| 사용 관계 | GitHub 없이 단독 사용 가능 | Git 저장소를 호스팅하므로 Git 없이는 무의미 |
결론적으로, Git은 버전 관리를 가능하게 하는 핵심 엔진이며, GitHub는 이 엔진을 활용하여 팀이 함께 일할 수 있도록 돕는 협업 플랫폼입니다.