본문으로 바로가기

Git / GitHub 이란?

category Software/Git, GitHub 2022. 1. 28. 18:45

 Git과 GitHub가 무엇이고 정확한 차이가 무엇인지 모르는 채 이용하고 있는 것 같아서.. 정확하게 알고 가자!

Git VS GitHub

Git

  • 소프트웨어의 버전을 관리하기 위한 소프트웨어, 분산 버전 관리 시스템
  • 로컬에서 관리되는 버전 관리 시스템(VCS: Version Control System)으로 소프트웨어 개발 및 소스 코드를 관리할 수 있도록 해준다.
  • 로컬 저장소를 이용하기 대문에 다른 개발자와 작업을 공유할 수 없다.

 

GitHub

  • Git 저장소를 관리하는 클라우드 기반 호스팅 서비스
  • 클라우드 방식으로 관리되는 버전 관리 시스템으로 다른 사람과 소스 코드를 공유할 수 있고, 공동 작업이 가능하다.

 

버전 관리란?

버전 관리 시스템은 변경 내역을 관리한다. 소프트웨어의 코드를 추가 또는 변경하는 과정을 모두 기록하여 특정한 시점으로 돌아가거나 복원하는 등 개발 현장에서 중요한 프로그램이이다.

 

  • 로컬 버전 관리 시스템(LVCS, Local VCS)
    • 데이터베이스를 이용해 파일의 이력(변경 정보)를 관리
    • 변경된 파일 전체를 저장하는 것이 아닌, 마지막 버전에서 변경된 부분(Patch)만 저장한다.
    • 로컬에서 동작하기 때문에 다른 개발자와 협업을 하는 상황에서는 버전 관리가 쉽지 않다.
    • 로컬 내부 데이터베이스에 문제가 생긴다면 버전에 문제가 생길 수 있다.
  • 중앙집중식 버전 관리 시스템(CVCS, Centralized VCS)
    • 서브버전
    • 서버에 리포지토리를 집중시켜 배치하여, 하나의 소프르웨어를 개발할 때는 하나의 리포지토리만 존재
    • 데이터가 중앙 서버에 집중되는 형태로, 관리가 무척 단순하는 장점이 있다.
    • 서버에 접속할 수 없거나 서버가 다운되면 최신 소스 코드를 받아올 수 없어 개발이 불가능한 단점이 있다.
    • 서버가 고장 나서 데이터가 사라지면 최신 소스 코드는 두 번 다시 볼 수 없다..
  • 분산 버전 관리 시스템(DVSC, Distributed VSC)
    • Git
    • Fork 존재
      • GitHub에 있는 특정 리포지토리를 자신의 계정으로 복제
      • 복제된 리포지토리는 원래 리포지토리와 다른 리포지토리이기 때문에 수정해도 문제가 없다.
    • 집중형과 달리 리포지토리가 여러 개 존재할 수 있는 것이 특징이지만 다소 복잡하다.
    • 개인마다 리포지토리를 가질 수 있어 서버에 있는 리포지토리(원격 리포지토리)에 접속하지 않아도 개발이 가능하다.