2023.11.15(수)

🗂️VCS 종류

+) 🔗🔗

1. Local VCS

LVCS

  • 내 컴퓨터를 파일의 이력 관리를 위한 database로 사용
  • 로컬에서만 동작하기 때문에 협업 불가능
  • RCS(Revision Control System)

2. Centralized VCS

CVCS

  • 중앙 server가 모든 버전의 파일 및 변경 이력 관리
  • client(사용자)가 server에 접속해서 특정 버전의 snapshot을 받아서 사용 (이를 checkout이라고 함)
  • 모든 버전 관리 관련 동작은 server에서 처리되어야 하므로 server의 부하가 큼
  • server가 죽거나 장애가 발생하면 버전 관리가 이루어지지 않음
  • server에서 데이터가 망가지거나 삭제되면 복구하기 매우 어려움
  • offline 상태에서는 버전 관리 시스템을 사용할 수 없음 (only online)
  • 모든 버전 관리 관련 동작은 적어도 한 번 server를 경유해야 하므로 속도가 느림
  • 모두 server가 파일 및 파일 변경 이력 등을 독점하기 때문에 문제가 발생함!
  • SVN(SubVersion), CVS(Concurrent Versions System)

3. Distributed VCS⭐

DVCS

  • 각 client들이 모두 server의 백업본을 가짐으로써 CVCS의 문제점 해결
  • 특정 버전의 snapshot만 다운로드하는 것이 아니라 전체 저장소(repository)를 복사(clone)
  • server가 죽거나 offline 상태에서도 버전 관리 가능
  • 대부분의 버전 관리가 local에서 이루어지므로 속도가 빠름
  • CVCS에 비해 복잡하고, 동기화 문제가 있지만 오늘날 가장 널리 쓰이는 VCS
  • Git, Mecurial, Bazaar

💻Git & GitHub

Git GitHub

  • GitVersion Control System (local software)
    • 내 컴퓨터 안에서 로컬로 버전 관리 및 GitHub와 소통하는 시스템
    • Install Git
      • https://git-scm.com/ 에서 Git 다운로드
      • terminal.app (Mac) 또는 git bash (Windows)에서 git --version으로 확인
        git bash
  • GitHub는 Git으로 관리하는 프로젝트를 올려둘 수 있는 Git Hosting Service (site) 중 하나!
    • 원격 컴퓨터에서 백업 담당 및 버전 관리를 해주는 시스템
    • Git으로 관리하는 프로젝트를 올릴 수 있는 사이트도 GitHub뿐 아니라 GitLab, BitBucket 등 다양함


🧑‍💻CLI vs GUI

  • 사용자 Interface의 두 가지 유형
    • CLI(Command Line Interface) : Shell에서 키보드를 통해 명령어를 입력하여 컴퓨터와 상호작용

    • GUI(Graphical User Interface) : 그래픽 요소를 사용하여 직관적이고 시각적으로 사용자가 쉽게 컴퓨터와 상호작용
profile
이것저것 관심 많은 개발자👩‍💻

0개의 댓글