본문 바로가기
Dev/Git

Git 시작

by 펭귄안에 온천 2022. 9. 27.
728x90
반응형

Git의 탄생배경

  1. 리눅스 커털팀에서 버전관리를 하고있었음
  2. 2022년 래리 맥보이는 버전관리를 쉽게 해주는 BitKeeper를 개발
  3. 리눅스 커털팀도 BitKeeper를 도입
  4. 2005년 래리 맥보이는 BitKeeper 유로화 선언
  5. 리눅스 커털팀은 '돈없다 우리가 만들자!'
  6. Git 탄생
  7. 리누스 토르발스는 리눅스도 만들고 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