Git은 데이터 변경사항(Diff)을 기록하지 않고 스냅샵을 저장한다. Git은 커밋 당시에 파일의 상태를 중요시 여기며 변경사항이 없으면 단지 파일 링크로만 연결한다. Git은 데이터를 스냅샷의 스트림처럼 취급한다.

특징

  • 대부분 명령어를 로컬에서 실행하며, 서버와 네트워크으로 연결하지 않아 편리하고 속도가 빠르다.
  • 가장 기본적인 데이터 단위이자 기본 철학인 체크섬(SHA-1 해시, 40자 길이의 16진수 문자열)으로 데이터를 관리하여 무결성을 유지한다.
  • 스냅샷으로 데이터를 추가만 하기 때문에 안정성이 뛰어나다.

상태

Git은 각 파일에 대한 다섯 가지 상태와 이를 구분하는 세 가지 단계를 가지고 있다.

areas.png

Stage

  1. Git 디렉토리 : 프로젝트의 메타 데이터와 객체 데이터베이스를 저장하는 장소이다.
  2. Staging Area : Git 디렉토리에 존재하며 곧 커밋할 파일에 대한 정보를 저장한다.
  3. 워킹 트리 : 프로젝트의 특정 버전을 Checkout 한 것이다. Git 디렉토리의 압축된 데이터베이스에서 파일을 가져와 워킹 트리를 구성한다.

Status

  1. Committed : 수정된 파일이 로컬 레파지토리에 커밋된 상태이다. (새로운 스냅샷)
  2. Staged : 수정된 파일을 곧 커밋할 것으로 표시한 상태이다. (Staging Area)
  3. Modified : 파일 수정만 한 상태이다. 즉, 표시하지도 않은 상태인 것이다. (Working Directory)
  4. Unmodified : 기존 스냅샷에 포함되었고, 파일을 수정하지 않은 상태이다. (Working Directory)
  5. Untracked : 기존의 스냅샷에 포함되지 않았고, Git이 관리하지 않는 상태이다. (Working Directory)

참고

Git - Book