Pro git - 1.3

Updated:

Pro git - Git 기초

  • Git이 무엇이고 어떻게 동작하는지 이해하면 Git을 효과적으로 사용 가능하다.

1. 차이가 아니라 스냅샷

  • 큰 틀에서 봤을 때 VCS(버전 관리 시스템) 대부분은 각 파일의 변화를 시간 순으로 관리하면서 파일들의 집합을 관리한다.

  • 그러나 Git은 데이터를 파일 시스템 스냅샷의 연속으로 취급하고 크기가 아주 작다.
  • Git은 커밋하거나 프로젝트 상태를 저장할때마다 파일이 존재하는 그 순간을 중요하게 여긴다.
  • 파일이 달라지지 않았으면 Git은 성능을 위해서 파일을 새로 저장하지 않는다.
  • 단지 이전 상태의 파일에 대한 링크만 저장한다.
  • 즉, Git은 데이터를 스냅샷의 스트림처럼 취급한다.

2. 거의 모든 명령을 로컬에서 실행

  • 거의 모든 명령이 로컬 파일과 데이터만 사용하기 때문에 네트워크에 있는 다른 컴퓨터는 필요가 없다.

  • 모든 히스트로가 로컬 디스크에 있기 때문에 서버에 접근할 필요가 없어서 빠르다.

3. Git의 무결성

  • Git은 데이터를 저장하기 전에 항상 체크섬을 구하고 그 체크섬으로 데이터를 관리한다.
  • 체크섬은 Git에서 사용하는 가장 기본적인 데이터 단위이다.
  • Git은 SHA-1 해시를 사용하여 체크섬을 만든다.
  • 만든 체크섬은 40자 길이의 16진수 문자열이다.
  • 파일의 내용이나 디렉토리 구조를 이용하여 체크섬을 구한다.
  • Git은 모두 해시로 식별하므로 실제 저장할 때 해당 파일을 해시로 저장

4. Git은 데이터를 추가할 뿐

  • Git으로 무엇을 하든 Git DB에 데이터가 추가 됨.
  • 되돌리거나 데이터를 삭제할 방법이 없음.
  • 다른 VCS처럼 커밋하지 않으면 변경사항을 잃어버림.
  • 하지만 일단 스냅샷을 커밋하면 데이터를 잃지 않음

5. 세 가지 상태

1. Committed

  • 데이터가 로컬 DB에 안전하게 저장되었다는 의미

2. Modified

  • 수정한 파일을 아직 로컬 DB에 커밋하지 않음

3. Staged

  • 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태

6. 세 가지 단계

1. Git 디렉토리

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

2. Working 트리

  • 프로젝트의 특정 버전을 checkout 한 것
  • Git 디렉토리는 지금 작업하는 디스크에 있고 그 디렉토리 안에 압축된 DB에서 파일을 가져와서 워킹 트리를 만듬

3. Staging Area

  • Git 디렉토리에 있다.
  • 단순한 파일이고 곧 커밋할 파일에 대한 정보를 관리
  • Git에서는 기술용어로 index라고 함.

7. Git으로 하는 일 순서

  1. Working 트리에서 파일을 수정
  2. Staging area에 파일을 Stage 해서 커밋할 스냅샷을 만든다. 모든 파일을 추가할 수도 있고 선택하여 추가할 수도 있다.
  3. Staging Area에 있는 파일들을 커밋해서 Git 디렉토리에 영구적인 스냅샷으로 저장한다.
  • Git 디렉토리에 있는 파일들은 Commited 상태이다.
  • 파일을 수정하고 Staging Area에 추가했다면 Staged 상태이다.
  • 그리고 Checkout하고 나서 수정했지만 아직 Staging Area에 추가하지 않았으면 Modified 상태이다.