# 마인드맵 --- ``` Git 내부 구조 ├── 1. Working Directory │ └── 실제 작업 공간 (코드 작성, 수정) │ ├── 2. Index (Staging Area) ← .git/index │ └── git add로 관리됨 │ ├── 3. Local Repository (.git/) │ ├── 3.1 objects/ │ │ ├── blob: 파일 내용 │ │ ├── tree: 디렉토리 구조 │ │ └── commit: 스냅샷 + 부모 참조 + 메타 │ │ │ ├── 3.2 refs/ │ │ ├── heads/: 브랜치 포인터 │ │ ├── remotes/: 원격 브랜치 │ │ └── tags/: 태그 포인터 │ │ │ ├── 3.3 HEAD │ │ ├── 현재 브랜치 참조 (예: ref: refs/heads/main) │ │ └── detached 상태 가능 │ │ │ ├── 3.4 logs/ │ │ └── HEAD 및 refs의 이동 이력 (reflog) │ │ │ ├── 3.5 config │ │ └── 사용자 설정 정보 │ │ │ ├── 3.6 hooks/ │ │ └── pre-commit, post-commit 등 자동화 스크립트 │ │ │ └── 3.7 특수 HEAD 파일 │ ├── MERGE_HEAD ← merge 중 생성 │ ├── REBASE_HEAD ← rebase 중 생성 │ ├── ORIG_HEAD ← reset 전 위치 백업 │ ├── CHERRY_PICK_HEAD ← cherry-pick 중 충돌 시 │ ├── REVERT_HEAD ← revert 충돌 시 │ └── FETCH_HEAD ← fetch 결과 │ ├── 4. 명령어 동작 흐름 │ ├── git add │ │ └── 파일 → index 등록 │ ├── git commit │ │ ├── index → commit 객체 생성 │ │ └── 브랜치 포인터 → 새 커밋 │ ├── git reset │ │ ├── HEAD/브랜치 포인터 이동 │ │ └── --hard 시 index + 작업 디렉토리도 초기화 │ ├── git merge │ │ ├── merge commit 생성 │ │ └── MERGE_HEAD 기록 │ ├── git rebase │ │ ├── 커밋 재작성 (rewrite) │ │ └── REBASE_HEAD 기록 │ ├── git cherry-pick │ │ ├── 커밋 복사 │ │ └── CHERRY_PICK_HEAD 기록 │ ├── git revert │ │ ├── 반전 커밋 추가 │ │ └── REVERT_HEAD 기록 │ └── git stash │ ├── 현재 상태를 임시 커밋으로 보관 │ ├── refs/stash 생성 │ └── logs/refs/stash 이력 저장 │ └── 5. 복구 및 확인 ├── git reflog → HEAD, 브랜치 이동 이력 추적 ├── git log → 커밋 히스토리 ├── git cat-file -p <해시> → 객체 내용 확인 └── git fsck → 저장소 무결성 점검 ``` --- ## 요약
키워드 의미
blob 파일 내용
tree 폴더 구조
commit 전체 스냅샷
HEAD 현재 위치 추적 포인터
refs 브랜치/태그가 가리키는 대상
logs HEAD/브랜치 이동 기록 (reflog)
index 커밋 준비 상태 저장
stash 작업 보관소 (임시 커밋)
---