Repository
한 줄 요약
Git이 파일의 변경 이력을 저장하고 관리하는 저장소
개요
Repository(저장소, 줄여서 repo)는 프로젝트의 모든 파일과 그 변경 이력을 담고 있는 공간입니다. 일반 폴더와 다른 점은 .git 폴더가 있다는 것입니다.
my-project/
├── .git/ ← Git 저장소의 핵심 (히스토리 저장)
├── src/
├── index.html
└── README.md
핵심 포인트
- Repository = 프로젝트 폴더 +
.git폴더 .git폴더에 모든 변경 이력이 저장됨.git폴더를 삭제하면 히스토리가 사라짐
시각적 이해
┌─────────────────────────────────────────┐
│ Repository │
│ ┌──────────────────────────────────┐ │
│ │ 프로젝트 파일들 │ │
│ │ (소스코드, 문서, 이미지 등) │ │
│ └──────────────────────────────────┘ │
│ ┌──────────────────────────────────┐ │
│ │ .git 폴더 │ │
│ │ ┌────────────────────────────┐ │ │
│ │ │ 커밋 히스토리, 브랜치 정보, │ │ │
│ │ │ 설정, 원격 저장소 정보 등 │ │ │
│ │ └────────────────────────────┘ │ │
│ └──────────────────────────────────┘ │
└─────────────────────────────────────────┘
Local Repository vs Remote Repository
Local Repository (로컬 저장소)
Remote Repository (원격 저장소)
┌──────────────┐ ┌──────────────┐
│ Remote │◄─push──►│ Local │
│ Repository │◄─pull──►│ Repository │
│ (GitHub) │ │ (내 컴퓨터) │
└──────────────┘ └──────────────┘
Repository 만드는 두 가지 방법
1. 새로 만들기 (git init)
mkdir my-project
cd my-project
git init→ 빈 저장소가 생성됩니다. 자세한 내용은 git init 참고
2. 기존 저장소 복제하기 (git clone)
git clone https://github.com/username/repo-name.git→ 원격 저장소의 전체 복사본이 다운로드됩니다. 자세한 내용은 git clone 참고
.git 폴더 구조 (참고)
알아두면 좋은 정보
일반적으로 .git 폴더를 직접 수정할 필요는 없습니다.
.git/
├── HEAD ← 현재 브랜치 정보
├── config ← 저장소 설정
├── objects/ ← 커밋, 파일 데이터
├── refs/ ← 브랜치, 태그 참조
└── ...
자주 하는 실수
.git 폴더를 실수로 삭제
증상: fatal: not a git repository 에러
원인: .git 폴더가 삭제됨
해결:
- 백업이 있다면 복구
- 원격 저장소가 있다면 다시 clone
- 없다면 히스토리 복구 불가 →
git init으로 새로 시작
폴더 안에 또 git init을 실행
증상: 이상한 동작, nested repository 경고
원인: 중첩된 Git 저장소 생성
해결: 내부 .git 폴더 삭제
rm -rf inner-folder/.git관련 명령어
- git init - 새 저장소 생성
- git clone - 원격 저장소 복제
- git status - 저장소 상태 확인
더 알아보기
- Commit - 저장소에 변경사항 기록하기
- Remote란 - 원격 저장소의 개념
- Stage와 Working Directory - 저장소 내부 구조