Git이 버전을 관리하는 방법
- Git이 버전을 저장하는 방법
- 두 버전간의 파일 차이를 기록하는 것을 Delta Differencing이라고 하며 많은 버전 관리 시스템이 이 델타 기반 시스템을 사용한다
- git의 경우 변경된 파일 전체를 저장하지 않고 파일에서 변경된 부분을 찾아 수정된 내용만 저장한다
- 변화된 부분만 찾아 사진을 찍는 것과 같다하여 스냅샷(Snapshot)이라 명명된 방식을 사용하며 이 Snapshot 기술은 Delta Differencing중 하나이다
- Git의 동작 원리
- 실질적으로 우리가 작업을 하는 공간인 Working Directory, 중간 경유소인 Staging Area, 그리고 작업 내역이 저장되는 .git directory가 있다
- Working Directory에서 변경된 점을 Staging Area에 등록하면 변경점이 발생한 순간을 촬영하고 Repository에 승인을 요청하는 순간 Commit 이 되어 분기점이 생성
- 과거의 분기를 내려받기 위해서는 저장소에 요청하게 되는데, 이때 저장소가 돌려주는 분기는 Staging Area에 등록된 지점
- 순서로 보는 작업 과정
- 저장소 생성
- Git이 동작하기 위한 데이터와 우리의 프로젝트 버전이 기록되는 영역
- 새로운 저장소를 만들 때는 git init 명령어를 사용하게 되며 만들어진 저장소를 복제할 때는 git clone, 그리고 저장소에게 명령을 하기 위한 git remote 등의 명령어가 있다
- 특정 버전 불러오기
- 협업을 하게 되면 수많은 분기가 저장되어 있는데 그중에서도 git checkout 명령어를 사용하여 원하는 버전을 불러올 수 있다
- 불러온 버전을 아무리 수정해도 서버에는 저장되지 않는다
- 수정된 파일 스테이징 영역으로 올리기
- Staging Area는 다른말로 인덱스(Index)라고 한다
- 스테이징 영역으로 올린다는 뜻은, 사진에 찍힐 변경점을 지정한다는 의미
- 저장소에 버전 기록하기
- 촬영된 스냅샷을 저장소로 올린 것을 커밋(Commit)이라고 한다
- 커밋까지 완료되어야 버전이 기록되었다는 것이며 이 기록된 시점을 기준으로 과거로 거슬러 올라가거나 미래의 작업 시점으로 옮겨갈 수 있다