git에는 세가지 영역이 존재한다. 작업영역, 인덱스, 헤드.
세가지 영역을 동기화시키는 작업을 통해 프로젝트를 관리한다.
예로, 프로젝트에는 회원가입, 로그인의 두가지 기능을 개발해야한다.
작업영역 - 인덱스 동기화: 회원가입 기능을 작업영역에 먼저 구현을 하였다. 작업영역에서 기능이 완성되면 인덱스 영역에 스냅샷을 만들어둔다(add).
인덱스 - 헤드 동기화: 기능의 테스트가 끝나고 작업도를 보관할 때, 헤드영역에 인덱스 영역의 스냅샷을 추가한다(commit). 헤드영역에선 회원가입 기능의 가지(branch)가 저장된다.
작업영역 - 인덱스 동기화: 이어서 로그인 기능을 작업영역에 먼저 구현을 하였다. 작업영역에서 기능이 완성되면 인덱스 영역에 스냅샷을 만들어둔다.
인덱스 - 헤드 동기화: 기능의 테스트가 끝나고 작업도를 보관할 때, 헤드영역에 인덱스 영역의 스냅샷을 추가한다. 헤드영역에선 로그인 기능의 가지가 저장되며 HEAD커서가 이동하여 로그인기능 구현단계를 가리킨다.
회원가입 기능을 수정하려면 HEAD커서를 이전단계로 옮겨 작업하면 된다.
이를 통해 프로젝트의 형상을 관리할 수 있다.