yyeonjju / Interview_Questions

0 stars 0 forks source link

SCM(Software Configuration Management), VCS(Version Control System) 로서의 Git #23

Open yyeonjju opened 4 months ago

yyeonjju commented 4 months ago


Git 이란?





소프트웨어 형상 관리(SCM)란?



깃 페이지에 들어가보면 페이지 주소로만 봐도 SCM 이구나 끄덕끄덕 그리고 fast version control이라고 쓰여있는데 version control이 뭐길래??





버전관리 시스템(VCS, Version Control System)



 버전관리 시스템(VCS)이 왜 중요한가?



 VCS 의 종류



로컬 버전관리 (Local VCS)




### 중앙집중식 버전관리 (CVCS, Centralized VCS)
- 파일을 관리하는 서버가 별도로 있고 클라이언트가 중앙 서버에서 파일을 받아서 사용 - 개발자들은 그 서버에 업로드를 하고, 다운받기도 하면서 로컬 VCS를 사용할 때보다는 훨씬 쉽게협업도 하고 버전 관리도 할 수 있게 되었다. - ⭐️ 네트워크 연결이 필요함 - ⭐️ 확장성이 떨어질 수 있다 (프로젝트에 기여하는 개발자가 많을수록 안정적인 환경에서 변경 사항을 내보낼 기회가 줄어들며 이로 인해 병합 충돌과 같은 문제가 발생할 수 있다.)
- ⭐️문제는 **서버에 문제가 발생한 경우**이다. - commit을 하려면 서버에서 한번 다운받고 해야하는데 서버에 연결을 할 수 없는 상황이면 commit 자체도 할 수 없기 때문이다.
- **데이터를 다루는 방법 → 델타 기반 버전관리 시스템** - "델타"란 "수정된 내용"의 의미



### 분산 버전관리 시스템 (DVCS, Distributed VCS) - 서버에서도, 로컬에서도 똑같이 버전 관리 가능. 저장소를 히스토리와 더불어 전부 복제! - 서버에 문제가 있을 때 사용하지 못하는 CVCS에서 한단계 업그레이드된 것이 바로 **DVCS, 분산 버전 관리**이다. - 서버에도 우리가 원격으로 변경 사항들을 넣을 수 있지만 로컬에서도 똑같이 버전 관리를 할 수 있다. - 단순히 파일의 마지막 스냅샷을 Checkout 하지 않고 저장소를 히스토리와 더불어 전부 복제 - ⭐️메인 서버에 연결하지 않고도 체크인, 브랜치, 병합을 할 수 있다 - ⭐️ 클라우드에 저장된, 복제된 저장소에서 작업 - ⭐️ 장점은 팀원이 네트워크의 속도 저하에 대한 걱정 없이 별도로 신속하게 작업할 수 있다는 점
- **데이터를 다루는 방법** - 데이터를 **파일 시스템 스냅샵**의 연속으로 취급 - 스냅샷(특정시점의 파일과 디렉토리 상태를 그대로 사진찍듯 관리)