[Git-Pro] 1.3. 시작하기 - Git 기초



1.3. 시작하기 - Git 기초



1.3. 시작하기 - Git 기초

Git의 스냅샷


  • Git은 데이터를 파일 시스템 스냅샷의 연속으로 취급하고 크기가 아주 작다.
  • 파일이 달라지지 않았으면 Git은 성능을 위해서 파일을 새로 저장하지 않는다.
  • 단지 이전 상태의 파일에 대한 링크만 저장한다.
  • Git은 데이터를 스냅샷의 스트림처럼 취급한다.
  • 시간순으로 프로젝트의 스냅샷을 저장


로컬에서 실행가능


  • 프로젝트의 모든 히스토리가 로컬 디스크에서 관리
  • 거의 모든 명령이 로컬 파일과 데이터로만 사용 가능
  • 네트워크에 있는 다른 컴퓨터는 필요 없다.
  • Git은 프로젝트의 히스토리를 조회할 때 서버 없이 조회한다.
  • 작업 시 빠르게 가능


Git의 무결성


  • Git은 데이터를 저장하기 전에 항상 체크섬을 구하고 그 체크섬으로 데이터를 관리
  • 체크섬은 Git에서 사용하는 가장 기본적인(Atomic) 데이터 단위이자 Git의 기본 철학이다.
  • 체크섬 없이 어떠한 파일이나 디렉토리도 작업 할 수 없다.
  • Git은 SHA-1 해시를 사용하여 체크섬을 만든다.
  • 실제로 Git은 파일을 이름으로 저장하지 않고 해당 파일의 해시로 저장한다.
  • ex) 24b9da6552252987aa493b52f8696cd6d3b00373


Git은 데이터를 추가하는 방식

  • Git으로 무얼 하든 Git 데이터베이스에 데이터가 추가 된다.
  • 되돌리거나 데이터를 삭제할 방법이 없다.


Git의 세 가지 상태


  • Git은 파일을 Committed, Modified, Staged 이렇게 세 가지 상태로 관리한다.
    • Committed란 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미한다.
    • Modified는 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것을 말한다.
    • Staged란 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미한다.

이 세 가지 상태는 Git 프로젝트의 세 가지 단계와 연결돼 있다.

jdk-compile_2

Working tree, Staging Area, Git directory.

Git directory는 Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳을 말한다. 이 Git 디렉토리가 Git의 핵심이다. 다른 컴퓨터에 있는 저장소를 Clone 할 때 Git 디렉토리가 만들어진다.

Working tree는 프로젝트의 특정 버전을 Checkout 한 것이다. Git 디렉토리는 지금 작업하는 디스크에 있고 그 디렉토리 안에 압축된 데이터베이스에서 파일을 가져와서 워킹 트리를 만든다.

Staging Area는 Git 디렉토리에 있다. 단순한 파일이고 곧 커밋할 파일에 대한 정보를 저장한다. Git에서는 기술용어로는 “Index” 라고 하지만, “Staging Area” 라는 용어를 써도 상관 없다.

Git으로 하는 일은 기본적으로 아래와 같다.

  1. 워킹 트리에서 파일을 수정한다.
    • 일반적으로 내용 및 개발 수정 작업
    • 수정했지만, 아직 Staging Area에 추가하지 않은 상태이기에 Modified 이다.
  2. Staging Area에 파일을 Stage 해서 커밋할 스냅샷을 만든다.
    • add Index으로 Staged Changes 부분에 커밋할 내용을 올리는 작업
    • 파일을 수정하고 Staging Area에 추가했다면 Staged 이다.
  3. Staging Area에 있는 파일들을 커밋해서 Git 디렉토리에 영구적인 스냅샷으로 저장한다.
    • add Index할 파일들을 commit하는 작업
    • Git 디렉토리에 있는 파일들은 Committed 상태이다.




출처