일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- github
- 자료구조
- 쿠버네티스
- 코딩테스트
- 데이터베이스
- Python
- Linux
- 우분투
- programmers
- Lv 2
- 코테
- mysql
- docker
- 자바
- Kubernetes
- 리눅스
- Ai
- 알고리즘
- 깃
- 프로그래머스
- ubuntu
- 정처기
- 인공지능
- git
- db
- Java
- DevOps
- 머신러닝
- 파이썬
- LV 0
Archives
- Today
- Total
Myo-Kyeong Tech Blog
[ Git / GitHub ] 버전 관리 시스템 ( VCS, Version Control System ) 본문
728x90
반응형
버전 관리 시스템 ( VCS, Vesrsion Control System) 이란?
위의 사진과 같이 파일 관리를 하다 보면 각 파일마다 어떠한 변경이 이루어졌는지 실제로 어떤 파일이 "진짜" 최종 버전인지 알기 알기 어렵습니다. 이러한 문제를 해결하기 위해서 버전 관리 시스템이 필요합니다.
버전 관리 시스템을 간단하게 설명하면, 파일의 변경 사항을 기록하고 필요할 때 언제든지 특정 시점의 버전으로 다시 불러올 수 있는 시스템입니다.
다수의 개발자가 동시에 개발을 할 때, 각자의 작업 내용을 분리하여 관리하게 해주고 어떤 변경사항이 언제, 누구에 의해 이루어졌는지 추적할 수 있기 때문에 프로젝트의 투명성을 높이고 문제가 발생 시에 이를 신속하게 해결할 수 있도록 도와줍니다.
이러한 버전 관리 시스템은 크게 로컬 버전 관리 시스템, 중앙 집중식 버전 관리 시스템, 그리고 분산 버전 관리 시스템으로 나뉩니다.
로컬 버전 관리 시스템 ( Local Version Control System )
- 로컬 컴퓨터에서 파일과 그 변화를 관리하는 시스템
- 파일의 각 버전을 데이터베이스에 저장
- 언제든지 특정 버전으로 되돌아 갈 수 있고, 어떤 변경이 언제 이루어졌는지 추적할 수 있음
- ex ) RCS (Revision Control System)
- 한 사람이 작업을 할 때 유용하며, 파일의 변화를 추적하고 관리하는 데 편하지만 여러 사람이 동시에 작업할 경우 불편함
중앙 집중 버전 관리 시스템 ( Centralized Version Control System )
- 파일의 모든 버전과 변경 이력을 중앙 서버에 저장하는 방식의 버전 관리 시스템
- 사용자들은 중앙 서버에서 필요한 파일을 '체크아웃'해서 로컬에 복사하고 작업한 후, 변경사항을 다시 서버에 '커밋' 함
- ex) Subversion(SVN), Perforce
- 중앙 서버가 고장나거나 데이터를 잃어 버리면 그 서버에 저장된 모든 버전 정보와 변경 이력을 잃게 됨
분산 버전 관리 시스템 ( Distributed Version Control System )
- 각 사용자의 로컬 컴퓨터에 파일의 모든 버전과 변경 이력을 복제하여 저장하는 방식의 버전 관리 시스템
- 사용자는 각 로컬 컴퓨터에서 작업하고 작업이 끝나면 변경 사항을 다른 사용자와 공유할 수 있음
- 복잡한 프로젝트에 여러 사람이 동시에 작업 할 경우 유용
- ex ) Git, Mercurial
- 네트워크에 접속하지 않은 상태에서도 작업을 계속 할 수 있으며, 서버에 문제가 발생해도 모든 개발자의 컴퓨터에 복제본이 있기 때문에 데이터를 잃지 않음
예를 들어, 오픈 소스 프로젝트에 참여하는 여러 개발자가 전 세계에 퍼져 있을 경우에 모든 개발자가 중앙 서버에 접속해 작업을 하기에는 불편할 수 있습니다. 또한, 중앙 서버에 문제가 발생한다면 모든 개발자의 작업이 중단되는 문제가 발생할 수 있는데요. 이러한 문제를 해결하기 위해 분산 버전 관리 시스템을 사용할 수 있습니다!
REFERENCE
728x90
반응형
'Git' 카테고리의 다른 글
[ Git / GitHub ] Git 로컬 변경 사항 초기화하기 ( reset / stash ) (0) | 2023.09.25 |
---|---|
[ Git / GitHub ] Git 사용하여 프로젝트 협업하기 (0) | 2023.09.11 |
[ Git / GitHub ] Git 과 GitHub repository 연동② - GitHub 리포지토리 생성 및 변경 사항 GitHub에 푸시 (0) | 2023.05.28 |
[ Git / GitHub ] .gitignore 파일 설명 및 작성 방법 (0) | 2023.05.26 |
[ Git / GitHub ] Git 과 GitHub repository 연동① - Windows 10 에 Git 설치 (0) | 2023.05.25 |