도식화


1. 전체 구조 개요

.git/
├── HEAD                  ← 현재 가리키는 브랜치 (예: ref: refs/heads/main)
├── config                ← 로컬 Git 설정
├── description           ← 주로 bare repo에서 사용
├── index                 ← 스테이징 영역 정보 (트래킹 중인 파일 목록)
├── objects/              ← Git 객체 저장소 (blob, tree, commit, tag)
│   ├── xx/xxxx...        ← SHA-1 해시로 저장된 개별 객체
│   └── pack/             ← 압축된 객체 저장소 (.pack, .idx)
├── refs/                 ← 브랜치, 태그 등 참조(포인터)
│   ├── heads/            ← 브랜치 참조 (예: main, feature)
│   ├── remotes/          ← 원격 브랜치 정보 (예: origin/main)
│   └── tags/             ← 태그 정보
├── logs/                 ← HEAD 및 refs의 이동 이력 (reflog 저장소)
│   ├── HEAD
│   └── refs/
├── info/                 ← exclude 설정 등 부가 정보
└── hooks/                ← 커밋, 푸시 등 Git 이벤트용 스크립트

2. 각 구성 요소 설명

🔹 .git/HEAD

🔹 .git/objects/

.git/objects/
├── a7/...
├── d1/...
└── pack/    ← packfile 압축 저장소

🔹 .git/refs/

.git/refs/heads/main → a1b2c3d4e5 (커밋 해시)

🔹 .git/logs/

🔹 .git/index

🔹 .git/hooks/

pre-commit, post-commit, pre-push 등

3. 핵심 흐름

📁 Working Directory
   ↓ git add
📂 .git/index (Staging Area)
   ↓ git commit
📦 .git/objects/ (커밋, 트리, 블롭 저장)
   ↓ 브랜치 포인터 이동
📄 .git/refs/heads/main
   ↑ HEAD → 현재 브랜치 참조

요약

구성요소

설명

HEAD

현재 브랜치 또는 커밋을 가리킴

refs

브랜치/태그 → 커밋 연결

objects

모든 데이터(SHA-1 기반) 저장소

index

스테이징 상태 추적

logs

HEAD 및 브랜치 이동 이력 (reflog)

hooks

Git 이벤트 발생 시 실행되는 스크립트




Revision #4
Created 28 May 2025 08:08:15 by Dain
Updated 28 May 2025 08:20:08 by Dain