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 (로컬 저장소)

  • 내 컴퓨터에 있는 저장소
  • git init으로 생성하거나 git clone으로 복제
  • 인터넷 없이도 작업 가능

Remote Repository (원격 저장소)

  • GitHub, GitLab 등 서버에 있는 저장소
  • 팀원들과 코드를 공유하는 공간
  • git push로 업로드, git pull로 다운로드
┌──────────────┐         ┌──────────────┐
│   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

관련 명령어

더 알아보기