VCS/Git

[Pro Git] 1-3. 시작하기: Git 기초

noahkim_ 2024. 1. 13. 23:25

Scott Chacon & Ben Straub 님의 "Pro Git" 책을 정리한 포스팅 입니다.

 

1. Git 기초

차이가 아니라 스냅샷

델타 기반 버전관리 시스템

  • 파일의 변경 사항만을 시간순으로 관리하면서 버전관리를 수행합니다.
  • 제품 : CVS, Subversion, Perforce 등

 

스냅샷 기반 버전관리 시스템

  • 시간순으로 파일 시스템의 '스냅샷'으로 관리한다는 것을 의미합니다.
  • 커밋할 때마다, 변경된 파일 전체를 저장합니다.
    • 변경사항이 없는 파일은 링크만을 저장합니다.

 

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

  • 오프라인 상태이더라도 작업이 가능합니다.
    • 로컬 저장소에서 작업하고 원격 저장소에 동기화 가능

 

Git의 무결성

체크섬
  • 고유 식별자 (fingerprint 역할)
    • 데이터 무결성 검증을 위해 사용되는 값입니다.
    • 파일이나 데이터 덩어리의 내용을 대표하는 짧은 코드나 숫자입니다.
    • 원본 데이터의 변경 없이는 체크섬 값이 변경될 수 없습니다.
  • 해시함수
    • SHA-1 해시함수를 사용하여 체크섬을 생성합니다.
    • 40자 길이의 16진수 문자열 (24b9da6552252987aa493b52f8696cd6d3b00373)

 

Git은 데이터를 추가할 뿐

  • 무엇을 하든, 데이터를 git 데이터베이스에 추가합니다.
    • 되돌리거나 삭제할 수 있는 방법은 없습니다.

 

디렉토리

Working Directory
  • 프로젝트의 특정 버전을 Checkout 한 것입니다.
    • 실제 파일들이 사용자가 작업할 수 있는 상태로 존재하는 디렉토리를 말합니다.
  • git directory에 압축된 데이터베이스 내용을 기반으로 Working Directory가 만들어집니다.

 

Git Directory (.git)
  • 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳을 말합니다.
    • 모든 파일의 버전 히스토리를 저장합니다. (커밋 로그, 브랜치, 태그 등)
  • Clone
    • 해당 프로젝트의 Git Directory가 만들어집니다.
    • 원격 저장소의 모든 데이터와 이력을 로컬 컴퓨터로 가져오는 것을 포함합니다.

 

Staging Area (index)
  • 변경사항 준비 공간 : 곧 커밋할 파일에 대한 정보를 저장합니다.
  • 선택적 커밋 : 선택적으로 일부 변경사항만 staging area에 추가하여 커밋할 수 있습니다.
  • git directory에 있습니다.

.

파일의 상태

Modified
  • 파일을 수정하고, 아직 로컬 데이터베이스에 커밋하지 않은 상태

 

Staged
  • 수정한 파일 중, 곧 커밋할 것이라고 표시한 상태

 

Committed
  • 파일이 로컬 데이터베이스에 저장된 상태

 

 

 

출처