Git & Github

Git 이란?

콧등치기국수 2020. 8. 3. 18:59

1. Git ?? 버전관리 시스템?

 

Git버전 관리 시스템(VCS, Version Control System)의 한 종류입니다.

 

버전 관리 시스템은 시간에 따라 파일 변화를 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템입니다.

 

VCS를 사용하면 각 파일을 이전 상태로 되돌릴 수 있고, 또는 프로젝트를 통째로 내가 원하는 시점의 과거 상태로 되돌릴 수 있습니다.

 

시간에 따라 수정 내용이 어떻게 변했는지 비교해 볼 수도 있고, 누가 문제를 일으켰는지도 추적할 수도 있고, 누가 언제 만들어낸 이슈인지도 알 수 있습니다. 그래서 VCS를 사용하면 파일을 잃어버리거나 잘못 고쳤을 때도 쉽게 복구할 수 있습니다. (ctrl + z와는 차원이 다르게 활용가능할 것 같네요)

 


2. 버전관리 시스템의 종류

이러한 버전관리 시스템에는 3가지 종류가 있습니다.

 

1) 로컬 버전관리

서버 없이 로컬 컴퓨터 내에서 버전을 관리하는 방식입니다.

간단한 데이터베이스만으로도 구현이 가능하므로 단순하고 개인적인 프로젝트에 적합하지만
협업에서 쓰기에는 힘들고, 컴퓨터가 고장나는 등 내부 정보가 통째로 날아가버리면 복구할 방법이 없습니다.

 

 

2) 중앙집중식 버전 관리(CVCS)

파일을 관리하는 서버가 별도로 있고, 클라이언트가 중앙 서버에서 수정을 원하는 파일만 받아서 수정한 후 서버에 올립니다.

중앙서버에서 파일을 받아서 사용하므로 협업이 가능합니다.

또한 관리자는 누가 무엇을 하는지 꼼꼼히 관리할 수 있고 모든 클라이언트의 로컬 데이터베이스를 관리하는 것보다 VCS 하나를 관리하기가 훨씬 쉽습니다.

 

치명적인 단점으로는 만약 중앙서버가 다운되면 그동안 다른 사람들과 협업할 수 없고, 사람들이 하는 일을 서버에 백업할 수도 없습니다.

또한 중앙데이터베이스가 있는 하드디스크에 문제가 생기면 프로젝트의 모든 히스토리를 잃을 수 있습니다.

 

 

3) 분산 버전 관리 시스템(DVCS)

 

파일을 저장하는 서버가 있는 것은 CVCS와 동일하지만 수정을 위해 프로젝트 전체를 로컬에 다운 받은 뒤 수정합니다.

그래서 중앙 서버가 다운되더라도 개별 사용자들은 작업이 가능하고, 서버가 날아가도 다운 받은 내용은 남아있고 클라이언트 중에서 아무거나 골라서 서버를 복원할 수 있으므로  가장 안정적입니다.

 

수정시에도 현재 코드는 나 혼자 수정하고 있기 때문에 충돌의 염려 없이 수정할 수 있습니다.

 

 

 

 

참고자료