728x90
반응형
Git의 탄생배경
- 리눅스 커털팀에서 버전관리를 하고있었음
- 2022년 래리 맥보이는 버전관리를 쉽게 해주는 BitKeeper를 개발
- 리눅스 커털팀도 BitKeeper를 도입
- 2005년 래리 맥보이는 BitKeeper 유로화 선언
- 리눅스 커털팀은 '돈없다 우리가 만들자!'
- Git 탄생
- 리누스 토르발스는 리눅스도 만들고 GIT도 만들고 대단한 개발자
Git이 다른 형상관리시스템과 다른점
1. 델타 VS 스냅샷
델타 방식
- 두 시점의 스냅샷을 비교하면 델타를 얻을 수 있다.
- 델타란 수정된 내용을 의미함, diff(차이점)
- 기존의 SVN등은 델타 방식을 사용함
- 그림을 보면 버전별로 해당 파일들의 변화가 누적된걸로 계산됨
- 커밋이 엄청 많을때 브랜치를 바꾸거나 버전 변경시 그동안의 변경사항을 가지고 내용을 계산해야 하기 떄문에 느려질 수 있음
스탭샷 방식
- 특정 시점에서 파일, 폴더 또는 워크스페이스의 상태를 의미
- git에서의 스냅샷은 commit했을 당사의 시점의 상태를 의미
- '수정한 것만' 추출하는 과정이 필요한 델타보다 현재 상태 그대로 스냅샷을 저장하기 떄문에 스냅샷이 빠르다고 함
- 버전별로 해당 파일들의 스냅샷으로 내용이 계산됨
- 커밋이 많아도 버전을 변경하거나 브랜치를 바꿀때 그때의 상태를 불러오면 됨
Git이 작고 빠를 수 있는 이유
- Git에서 커밋을 하면 워크스페이스의 상태가 스냅샷으로 저장된다.
- Git은 마지막 커밋의 스냅샷만 통째로 저장하고 나머지 커밋에 대해서는 스냅샷과 스냅샷의 차이를 기록한 '델타'를 저장한다.
- 이렇게 하면 버전별로 스냅샷을 모두 저장하지 않아도 마지막 스냅샷 기준으로 특정 시점의 스냅샷을 만들수 있음
- 저장소 크기도 줄어듬
- 이렇듯 따지고 보면 GIT은 스냅샷방식만 사용하는것이 아닌 델타 방식도 같이 사용중
2. 중앙집중식 VS 분산버전
중앙집중식
- 파일을 로컬에서만 관리를 하면 협업하기 어려운 문제가 발생한다.
- 각자의 파일을 합칠려면 서로의 로컬 컴퓨터를 연결해야 했기 떄문에 직접 만나서 작업을 해야 했다.
- 그것을 해결하기 위해 CVCS(중앙 집중식 버전 관리)가 개발되었다.
- 파일을 관리하는 서버가 별도로 있고 클라이언트가 중앙 서버에서 파일을 받아서 사용
- 개발자는 서버에 파일을 업로드하고 다운받으며 협업과 버전관리를 했다.
- 그러나 중앙집중식버전관리에도 단점이 존재하였는데
- 서버의 문제가 발생한 경우다.
- 서버가 문제가 발생하면 파일을 업로드, 다운로드가 안된다는는 문제가 있다.
- 서버가 문제가 발생하면 백업할 방법도 없다.
- 서버의 하드디스크에 문제가 생기면 모든 히스토리도 잃는다.
- 대표적으로 SVN
분산버전
- 서버, 로컬도 똑같이 버전관리기능,저장소,히스토리를 전부 복제
- 서버의 문제가 발생하여 하드디스크가 날라가도 로컬에 있던 히스토리을 가지고 복구 가능
- 왜 우리 git clone으로 코드 가져와서 로컬에서 셋팅했을때 그 clone전의 히스토리까지 보이는데 그것이 바로 히스토리등을 다 복제해온것
반응형
'Dev > Git' 카테고리의 다른 글
.husky/pre-commit: Line 4 yarn: command not found (0) | 2023.11.09 |
---|---|
reset 한걸을 다시 되돌리는 방법 - reflog (0) | 2022.10.01 |