[git]

cowmin·2025년 6월 4일

동작 원리

0. 기본 상태

1. Git 저장소 생성

git init

.git 폴더를 생성해서 Git이 버전 관리를 시작할 수 있도록 초기화

  • .git/objects: Git 객체 저장소(blob 객체, 트리 객체, 커밋 객체)
  • .git/index: 스테이징 영역

2. 파일 스테이징

2-1. 파일 생성

2-2. 파일 스테이징

git add

해당 파일 스테이징

  • 바로 커밋하지 않고 스테이징 단계를 거치는 이유
    이유 1. 변경 중 일부만 선택적으로 커밋하려고
    이유 2. 변경을 임시 저장소(index)에 한번 걸러주기 위해

  • .git/objects 디렉토리에 파일 내용을 가공한 blob 객체 저장

    • blob 형태로 가공: [타입][공백][내용 바이트][\0][파일 내용]
    • ex) blob 5\0hello
  • .git/index 파일에 blob 객체의 정보 기록

3. 파일 커밋

git commit

스테이징 영역(Index)에 있는 파일들의 스냅샷을 Git 저장소(.git/objects)에 커밋 객체로 저장하고, 브랜치를 해당 커밋으로 이동시킴

  • .git/objects 디렉토리에 트리 객체(파일 모드, 타입, blob 해시, 파일 이름) 저장

    100644 blob ce013625030ba8dba906f756967f9e9ca394464a	abc.txt 
  • .git/objects 디렉토리에 커밋 객체(트리 해시, 부모 커밋 해시, 작성자 정보, 커밋터 정보, 커밋 메시지) 저장

    tree 0818fc0d21247864e192b0db54e70cf8e9259fec
    author yunsomin <yunsomin@SOMINPCui-MacBookAir.local> 1749211240 +0900
    committer yunsomin <yunsomin@SOMINPCui-MacBookAir.local> 1749211240 +0900
    
    git test

git remote
git add
git comit
git branch

git clone
git push
git pull

사용 목적

  1. 파일 버전 관리
  2. 파일 백업
  3. 협업

0개의 댓글