Git 핵심 : 레포지토리와 커밋
🔸 레포지토리(repository)란?
- Git이 프로젝트의 모든 변경 이력을 저장하는 저장소입니다.
- .git 폴더가 곧 레포지토리이며, 이 안에 모든 버전 정보가 들어 있습니다.
- Git은 내부의 객체 데이터베이스(Object Database)에
파일과 폴더의 시점별 상태(스냅샷), 변경 이력, 메타데이터 등을 저장합니다.
🔸 레포지토리에 저장되는 정보
| 파일의 스냅샷 | 특정 시점의 파일 상태를 복사하여 저장 (변경된 부분만 저장) |
| 커밋(Commit) | 변경 내역, 메시지, 작성자, 시간 등의 정보를 담은 스냅샷 단위 |
| 브랜치 정보 | 작업 흐름을 분기하거나 관리하기 위한 지점 정보 |
| 기타 메타데이터 | 커밋 해시값, 사용자 정보, 로그 기록 등 |
🔸 커밋(commit)이란?
- 행위:
프로젝트 디렉토리의 현재 상태를 하나의 버전으로 기록하는 것 - 결과물:
그 시점의 스냅샷(파일 구조와 내용) + 메타정보
→ 즉, 하나의 버전 단위
✅ 커밋은 "변경된 점"이 아닌, "그 시점의 디렉토리 전체 상태"를 기록한 것
🔸 Git의 진짜 동작 방식
- Git은 커밋을 만들 때, 프로젝트 디렉토리 전체를 쭉 훑어서
모든 파일의 현재 상태(내용)를 기록합니다. - 단, 이전 커밋과 내용이 똑같은 파일은 중복 저장하지 않고 재활용하죠.
즉, 내부적으로는
“변경된 점만 저장하는 것처럼 보이지만,
논리적으로는 전체 디렉토리 구조의 스냅샷을 저장하는 구조예요.”
🔸 커밋과 레포지토리의 관계
개념설명
| 커밋 | 프로젝트의 특정 시점을 저장하는 단위 (버전 기록 + 결과물) |
| 레포지토리 | 커밋들을 차곡차곡 저장하고 관리하는 장소 (.git 폴더) |
🔸 레포지토리가 있어서 가능한 Git 기능
- 특정 시점으로 되돌리기 (git checkout, git revert)
- 서로 다른 시점 비교하기 (git diff)
- 누가, 언제, 어떤 변경을 했는지 추적 (git log, git blame)
'데이터 분석 > 04. Git' 카테고리의 다른 글
| gitignore : Git으로 관리하지 않을 파일과 폴더 (0) | 2025.11.05 |
|---|---|
| Git 설정하기 (2) | 2025.11.05 |
| CLI vs GUI (0) | 2025.11.05 |
| Git의 3가지 작업 영역 (2) | 2025.08.01 |
| Windows에서 Git 설치하기 (0) | 2025.07.31 |
