- VCS를 사용하는 이유: 파일이나 프로젝트에 대한 변경을 관리하기 위해
- 왜? 수정 기록을 비교해 볼 수도 있고, 누가 문제를 일으켰는지도 추적할 수 있고, 누가 만들어낸 이슈인지도 알 수 있다. 잘못되었을 때, 되돌리기도 쉽다.
- 위의 모든 장점을 큰 노력없이 이용할 수 있다.
- VCS의 역사
- 로컬 버전 관리(Local VCS): 아주 간단한 데이터베이스를 이용, 파일의 변경정보를 저장한다.
- 중앙집중식 버전 관리(CVCS): 협업을 하기 위해서 파일을 관리하는 서버가 별도로 있고 클라이언트가 중앙 서버에서 파일을 받아서 사용(Checkout)한다. 몇 가지 치명적인 결점이 있으나 그 중 가장 큰 결점이 중앙서버에 문제가 발생하면, 협업이 불가능, 백업도 불가능
- 분산 버전 관리(DVCS): DVCS는 단순히 파일의 마지막 스냅샷을 Checkout하지 않는다. 그냥 저장소를 전부 복제한다. 서버에 문제가 생겨도 복제물로 다시 작업을 시작할 수 있다. 리모트 저장소를 여러 군데에 둘 수 있기 때문에 다양한 방법으로 협업할 수 있다. 그래서 여러 방식의 workflow가 존재하게 된다.
- Git이 개발되게 된 계기
- 원래 Linux 커널은 압축파일로 관리하고 Patch하는 방식이었다.
- 2002년 BitKeeper라고 하는 상용 DVCS를 사용했으나 2005년 관계가 틀어지며 리눅스 개발 커뮤니티가 자체 DVCS를 개발하게 되는 계기가 되었다.
- Git의 목표
- 빠른 속도
- 단순한 구조
- 비선형적인 개발
- 완벽한 분산
- 리눅스 커널같은 대형 프로젝트에도 유용할 것(속도나 데이터 크기 면에서)
- Git의 핵심은 무엇일까?
- Git은 다른 VCS들과는 달리 정보를 취급하는 방식이 다르다.
- 다른 VCS들은 관리하는 정보가 파일들의 목록
- Git은 데이터를 파일 시스템 스냅샷으로 취급하고 크기가 매우 작음 Git은 데이터를 스냅샷의 스트림처럼 취급한다.
- 거의 모든 명령이 로컬에서 실행된다.
- 네트워크의 속도에 영향을 받는 CVCS를 사용햬본적이 있다면 이것이 굉장히 빠르다고 느껴질 수 있다.
- 대부분의 명령이 히스토리가 로컬에 있기 때문에 모든 명령이 재빠르게 실행된다.
- CVCS와 비교해서 오프라인 상황에서 자유롭게 작업이 가능하다는 장점이 있다.
- Git은 다른 VCS들과는 달리 정보를 취급하는 방식이 다르다.