1. Git의 무결성
깃은 데이터를 저장하기 전에 항상 체크섬을 구하고 체크섬으로 데이터를 관리한다. 그래서 체크섬을 이해하는 깃 없이는 어떤 파일, 디렉토리도 변경할 수 없다. 체크섬은 깃에서 사용하는 가장 기본적인 데이터 단위이자 기본 철학이다.
깃은 SHA-1 해시를 사용해 체크섬을 만든다. 만든 체크섬은 40자 길이의 16진수 문자열이다. 파일 내용이나 디렉토리 구조를 이용해 체크섬을 구한다. SHA-1은 이렇게 생겼다.
24b9da6552252987aa493b52f8696cd6d3b00373
깃은 모든 것을 해시로 식별하므로 이런 값은 자주 보인다. 실제로 깃은 파일을 이름이 아닌 해당 파일의 해시로 저장한다.
2. Git은 데이터를 추가할 뿐
깃으로 무얼하든 깃 데이터베이스에 데이터가 추가 된다.
되돌리거나 삭제할 방법이 없다. 다른 VCS처럼 깃도 커밋하지 않으면 변경사항을 잃어버릴 수 있다.
하지만 스냅샷을 커밋하고 나면 데이터를 잃기 어렵다.
3. 3가지 상태
매우 중요하다! 깃을 공부하기 위해 반드시 알아야한다. 깃은 파일을 Committed, Modified, Staged 세 가지 상태로 관리한다.
- Committed : 데이터가 로컬 데이터메이스에 안전하게 저장됐다는 것 의미
- Modified : 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 상태
- Staged : 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태
이 세 단계는 깃 프로젝트의 세 가지 단계와 연결됐다. 깃 디렉토리, 워킹 트리, Staging Area 단계를 이해해야 한다.
1. Git 디렉토리
깃이 프로젝트의 메타데이터와 객체 데이터베이스를 저장한다.
이것이 Git의 핵심이다. 다른 컴퓨터에 있는 저장소를 Clone할 때 Git 디렉토리가 만들어진다.
2. 워킹 트리
프로젝트의 특정 버전을 Checkout 한 것. Git 디렉토리는 지금 작업하는 디스크에 있고 디렉토리 안에 압축된 데이터베이스에서 파일을 가져와 워킹 트리를 만든다.
3. Staging Area
Git 디렉토리에 있다. 단순한 파일이고 곧 커밋할 파일에 대한 정보를 저장한다.
Git에서 기술용어로 "Index"라고 하지만 "Staging Area"라는 용어를 써도 된다.
- Git으로 하는 일
1. 워킹 트리에서 파일을 수정한다.
2. Staging Area에 파일을 Stage 해서 커밋할 스냅샷 만든다. 모든 파일을 추가할 수 있고 선택해서 추가할 수 있다.
3. Staging Area에 있는 파일들을 커밋해 깃 디렉토리에 영구적인 스냅샷으로 저장한다.
깃 디렉토리에 있는 파일들은 Committed 상태이다.
파일을 수정하고 Staging Area에 추가했다면 Staged이다.
그리고 Checkout 하고 나서 수정했지만 아직 Staging Area에 추가하지 않았으면 Modified 이다.
작업의 흐름
여러분의 로컬 저장소는 git이 관리하는 세 그루의 나무로 구성되어 있다.
첫번째 나무인 작업 디렉토리(Working directory)는 실제 파일들로 이루어져있고, 두번째 나무인 인덱스(Index)는 준비 영역(staging area)의 역할을 하며, 마지막 나무인 HEAD는 최종 확정본(commit)을 나타내요.
+ 직접 해본 예시
여기서 modified: hello.txt 는 워킹 디렉토리 상태이다. (빨간색)
여기서 초록색(new file: hello.txt)은 커밋 대기상태(Staging Area)이고
빨간색(web.txt)은 워킹 디렉토리 상태이다.
후에 추가적으로 실제 예시를 바탕으로 차근차근 글을 써야겠다.
'개발 > Git' 카테고리의 다른 글
[Git] 원격 저장소 Clone 복제 및 저장소 만들기까지 (0) | 2022.11.30 |
---|---|
[Git] 버전 관리 (0) | 2022.11.29 |