웹 풀사이클 데브코스 TIL [Day 2] - Git & GitHub

2023.11.15(수)
🗂️VCS 종류
+) 🔗🔗
1. Local VCS

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

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

- 각 client들이 모두 server의 백업본을 가짐으로써 CVCS의 문제점 해결
- 특정 버전의 snapshot만 다운로드하는 것이 아니라 전체 저장소(repository)를 복사(clone)
- server가 죽거나 offline 상태에서도 버전 관리 가능
- 대부분의 버전 관리가 local에서 이루어지므로 속도가 빠름
- CVCS에 비해 복잡하고, 동기화 문제가 있지만 오늘날 가장 널리 쓰이는 VCS
Git
, Mecurial
, Bazaar
💻Git & GitHub
Git ≠ GitHub
- Git은 Version Control System (local software)
- 내 컴퓨터 안에서 로컬로 버전 관리 및 GitHub와 소통하는 시스템
- Install Git
- GitHub는 Git으로 관리하는 프로젝트를 올려둘 수 있는 Git Hosting Service (site) 중 하나!


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

- GUI(Graphical User Interface) : 그래픽 요소를 사용하여 직관적이고 시각적으로 사용자가 쉽게 컴퓨터와 상호작용
