소프트웨어 형상 관리 (SCM, Software Configuration Management) 를 위한 툴 중 하나이면서
버전관리 시스템(VCS, Version Control System) 중 DVCS의 일종이다.
소프트웨어 형상 관리(SCM)란?
소프트웨어 변경사항을 체계적으로 추적 관리 통제하는 것
⇒ 우리가 짠 코드들이 추적되고 관리될 수 있도록하는 관리!
⇒ Git 은 소프트웨어 형상 관리(SCM)를 위한 툴 중 하나이다.
깃 페이지에 들어가보면 페이지 주소로만 봐도 SCM 이구나 끄덕끄덕
그리고 fast version control이라고 쓰여있는데
version control이 뭐길래??
버전관리 시스템(VCS, Version Control System)
파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 불러올 수 있는 시스템을 의미
VSC를 사용하면 선택한 파일을 이전 상태로 되돌릴 수 있고, 변경 사항을 비교하고, 변경한 사람 및 변경시기를 추적할 수 있다.
버전 관리 시스템(VCS)은 팀이 프로젝트의 소스 코드를 ⭐️백업⭐️하고 아카이빙하도록 지원
저장소를 쉽게 검토하고 편집할 수 있으며 빌드가 손상되는 오류 발생 시 이전 버전을 ⭐️복원⭐️할 수 있습니다.
버전 관리는 소스 코드 및 에셋에 대한⭐️ 업데이트를 트래킹하고 관리⭐️하는 체계적인 프로세스입니다
버전관리 시스템(VCS)이 왜 중요한가?
버전 관리 시스템은 DevOps의 핵심으로, 프로젝트의 소스 코드에 대해 팀이 협업하고 빠르게 반복 작업할 수 있도록 지원합니다.
개별 프로젝트 업데이트는 메인 소스 코드로 병합되기 전에 '커밋'이라고 하는 단일 그룹에 주기적으로 수집
버전 관리 소프트웨어는 각 프로젝트 파일의 모든 수정 사항을 트래킹하는 데 필수적입니다.
버전 관리는 모든 변경 사항, 변경한 사람, 각 변경의 모든 반복 작업(iteration)에 대한 로그를 제공합니다.
버전 관리 시스템을 갖추면 모든 이해 관계자와 팀원이 ⭐️다수의 파일에서 동시에 끊김 없이 작업⭐️할 수 있습니다. (분산된 개발로 개발자가 어디서든 작업 가능)
버전 관리 시스템은 모든 코드 편집 및 변경 사항을 하나의 중앙화된 저장소로 병합하도록 지원합니다.
VCS 내에 기록된 전체 변경 사항 아카이브 덕분에 ⭐️쉬운 문제 해결⭐️
VCS 의 종류
로컬 버전관리 (Local VCS)
팀 단위보다는 1인 개발자가 주로 사용
프로젝트 데이터가 단일 컴퓨터에 저장되며 프로젝트 파일에 대한 변경 사항은 패치로 저장
각 패치에는 이전 패치 이후에 구현된 업데이트만 포함
⭐️ 모든 데이터가 컴퓨터 하나에 연결되어 있으므로 로컬 버전 관리 시스템은 분산형 및 중앙 집중형보다 본질적으로 유연성이 낮음
⭐️ 팀원 간의 협업이 쉽지 않으며, 만약 데이터베이스가 손상되어 손실된 정보를 복원하지 못하면 곤란한 상황
대표적으로 RCS(Revision control system)가 있다.
### 중앙집중식 버전관리 (CVCS, Centralized VCS)
- 파일을 관리하는 서버가 별도로 있고 클라이언트가 중앙 서버에서 파일을 받아서 사용
- 개발자들은 그 서버에 업로드를 하고, 다운받기도 하면서 로컬 VCS를 사용할 때보다는 훨씬 쉽게협업도 하고 버전 관리도 할 수 있게 되었다.
- ⭐️ 네트워크 연결이 필요함
- ⭐️ 확장성이 떨어질 수 있다 (프로젝트에 기여하는 개발자가 많을수록 안정적인 환경에서 변경 사항을 내보낼 기회가 줄어들며 이로 인해 병합 충돌과 같은 문제가 발생할 수 있다.)
- ⭐️문제는 **서버에 문제가 발생한 경우**이다.
- commit을 하려면 서버에서 한번 다운받고 해야하는데 서버에 연결을 할 수 없는 상황이면 commit 자체도 할 수 없기 때문이다.
- **데이터를 다루는 방법 → 델타 기반 버전관리 시스템**
- "델타"란 "수정된 내용"의 의미
### 분산 버전관리 시스템 (DVCS, Distributed VCS)
- 서버에서도, 로컬에서도 똑같이 버전 관리 가능. 저장소를 히스토리와 더불어 전부 복제!
- 서버에 문제가 있을 때 사용하지 못하는 CVCS에서 한단계 업그레이드된 것이 바로 **DVCS, 분산 버전 관리**이다.
- 서버에도 우리가 원격으로 변경 사항들을 넣을 수 있지만 로컬에서도 똑같이 버전 관리를 할 수 있다.
- 단순히 파일의 마지막 스냅샷을 Checkout 하지 않고 저장소를 히스토리와 더불어 전부 복제
- ⭐️메인 서버에 연결하지 않고도 체크인, 브랜치, 병합을 할 수 있다
- ⭐️ 클라우드에 저장된, 복제된 저장소에서 작업
- ⭐️ 장점은 팀원이 네트워크의 속도 저하에 대한 걱정 없이 별도로 신속하게 작업할 수 있다는 점
- **데이터를 다루는 방법**
- 데이터를 **파일 시스템 스냅샵**의 연속으로 취급
- 스냅샷(특정시점의 파일과 디렉토리 상태를 그대로 사진찍듯 관리)
Git 이란?
소프트웨어 형상 관리(SCM)란?
버전관리 시스템(VCS, Version Control System)
버전관리 시스템(VCS)이 왜 중요한가?
VCS 의 종류
로컬 버전관리 (Local VCS)
### 중앙집중식 버전관리 (CVCS, Centralized VCS)
- 파일을 관리하는 서버가 별도로 있고 클라이언트가 중앙 서버에서 파일을 받아서 사용 - 개발자들은 그 서버에 업로드를 하고, 다운받기도 하면서 로컬 VCS를 사용할 때보다는 훨씬 쉽게협업도 하고 버전 관리도 할 수 있게 되었다. - ⭐️ 네트워크 연결이 필요함 - ⭐️ 확장성이 떨어질 수 있다 (프로젝트에 기여하는 개발자가 많을수록 안정적인 환경에서 변경 사항을 내보낼 기회가 줄어들며 이로 인해 병합 충돌과 같은 문제가 발생할 수 있다.)
- ⭐️문제는 **서버에 문제가 발생한 경우**이다. - commit을 하려면 서버에서 한번 다운받고 해야하는데 서버에 연결을 할 수 없는 상황이면 commit 자체도 할 수 없기 때문이다.
- **데이터를 다루는 방법 → 델타 기반 버전관리 시스템** - "델타"란 "수정된 내용"의 의미
### 분산 버전관리 시스템 (DVCS, Distributed VCS) - 서버에서도, 로컬에서도 똑같이 버전 관리 가능. 저장소를 히스토리와 더불어 전부 복제! - 서버에 문제가 있을 때 사용하지 못하는 CVCS에서 한단계 업그레이드된 것이 바로 **DVCS, 분산 버전 관리**이다. - 서버에도 우리가 원격으로 변경 사항들을 넣을 수 있지만 로컬에서도 똑같이 버전 관리를 할 수 있다. - 단순히 파일의 마지막 스냅샷을 Checkout 하지 않고 저장소를 히스토리와 더불어 전부 복제 - ⭐️메인 서버에 연결하지 않고도 체크인, 브랜치, 병합을 할 수 있다 - ⭐️ 클라우드에 저장된, 복제된 저장소에서 작업 - ⭐️ 장점은 팀원이 네트워크의 속도 저하에 대한 걱정 없이 별도로 신속하게 작업할 수 있다는 점
- **데이터를 다루는 방법** - 데이터를 **파일 시스템 스냅샵**의 연속으로 취급 - 스냅샷(특정시점의 파일과 디렉토리 상태를 그대로 사진찍듯 관리)