일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 그레이들
- TypeScript
- 백준
- react
- 안드로이드
- DFS
- DP
- Python
- db
- network
- Database
- VIM
- Data Structure
- Redux
- Javascript
- BFS
- 자바
- 알고리즘
- Algorithm
- java
- 동적 계획법
- LeetCode
- 프로그래머스
- CS
- 다이나믹 프로그래밍
- git
- Graph
- frontend
- vscode
- 리트코드
- Today
- Total
늘 겸손하게
VCS - Version Control System 본문
안녕하세요 besforyou입니다.
이번 글은 Version Control System이 무엇인지와
대표적인 Version Control System인 Git에 대해 설명하겠습니다.
옛날의 버전 컨트롤 방법
작업하던 파일들이 날아가거나, 또는 개발하다 오류가 터져 이도저도 못하는 상황이 오면 그 전 상태로 돌아가야하니까 중간 중간 백업 파일들을 복사했습니다.
이런식으로..
문제 1 : 하지만 파일 크기가 몇기가 수준으로 너무 커진다면?
백업본들이 공간을 너무 많이 차지하고 복사하는데 시간이 너무 걸립니다.
문제 2 : 여러 명이 함께 작업하고 있다면?
통합이 너무 어렵습니다.
그래서 나온것이 버전 관리 시스템 ( Version Control System, VCS )
버전 관리 시스템 의 효용
- 변경 내용 추적. 파일의 특정 부분을 누가, 언제, 왜 어떻게 변경했는지 다 기록이 된다.
- 과거 특정 시점 상태로 복원 가능
- 예기치 못한 오류, 사고 대비 백업 가능
- 효과적인 협업. 변경 내용을 통합하기가 편리
버전 관리 시스템의 종류
1. 로컬 버전 관리 시스템
2. 중앙집중식 버전 관리 시스템
3. 분산 버전 관리 시스템
로컬 버전 관리 시스템 ( Local Version Control System )
- 로컬 컴퓨터에만 변경 기록을 저장하는 방식
- 협업 불가능
초창기에 자주 쓰이던 방식
중앙집중식 버전 관리 시스템 ( Centralized Version Control System )
- 서버에 모든 파일과 변경 기록(history)를 저장
- 클라이언트들이 서버에서 파일들을 요청해 받아감
- 협업이 가능!
단점
-> 서버가 다운되면? 작업 불가능
-> 서버 저장소에 문제가 생기면? 모든 변경 기록 날아감 -> 재앙
분산 버전 관리 시스템 ( Distribute Version Control System )
- 모든 클라이언트가 서버의 저장소 복사본을 가짐
- 서버(원격저장소)는 클라이언트 간의 동기화 및 협업을 지원
- 중앙집중식 버전 관리 시스템의 단점을 해결
- 서버가 다운되거나 인터넷이 없어도 작업이 가능하다.
- 모든 클라이언트가 서버 저장소의 백업본을 가지고 있어 복구가 편리
- 현재 가장 많이 사용되는 방식
ex : Git
Git의 특성
- 저장소 전체의 스냅샷을 저장
- 파일이 변경되면 변경된 파일의 스냅샷만 저장하고, 변경되지 않은 파일은 이전 스냅샷에 대한 링크만 저장
- 적절한 시점에 garbage collection
- Key, Value 데이터 저장소. SHAI 해시값(Key)을 기준으로 파일의 변경 여부 판단
Git의 Branch
원래 코드에 영향을 주지 않고 독립적으로 개발을 진행할 수 있는 공간 -> branch
- 여러 개발자들이 동시에 다양한 작업 가능
- 코드 원본과 따로 진행되어야 하는 작업들을 위해 사용 (ex : 실험적인 기능 구현, 급한 버그 fix , 다음 버전 릴리즈 준비 )
- 작업 완료 후 main branch에 merge(병합) 가능
- git branch는 특정 커밋을 가리키는 "포인터"에 불과 ( 41 바이트짜리 SHA1 checksum 파일에 불과 ). 빠르고 가벼움
'Computer Science' 카테고리의 다른 글
CS - HTTP (0) | 2022.05.29 |
---|---|
CS - 호스팅이란? (0) | 2022.05.28 |
주소창에 DNS를 입력하면 일어나는 일 - CS (0) | 2022.05.28 |
인터넷 작동 원리 (0) | 2022.05.28 |
딥러닝 이미지 분류 모델 개발 일지 - 1 (0) | 2022.02.18 |