[GitHub 100일 챌린지] Day 11 - Repository 개념 이해하기
100일 챌린지 Day 11 - Repository는 프로젝트의 모든 것을 담는 저장소입니다
배울 내용
- Repository가 무엇인지
- Repository의 구성 요소
- Public vs Private Repository
Topic1. Repository란?
Repository(저장소) = 프로젝트 보관함
GitHub에서 Repository(줄여서 Repo)는 프로젝트의 모든 파일과 버전 히스토리를 저장하는 공간입니다.
조금 더 정확히 말하면 Repository는 “프로젝트를 운영하는 단위”입니다. 코드만 들어 있는 것이 아니라, 설명 문서, 이슈, PR, 릴리스, 보안 설정, 자동화까지 함께 묶입니다.
처음에는 아래 네 가지를 한 세트로 기억하세요.
| 요소 | 역할 |
|---|---|
| Code | 실제 파일과 폴더 |
| README | 처음 방문한 사람에게 보여주는 안내문 |
| Issues | 해야 할 일, 버그, 질문 관리 |
| Pull requests | 변경 제안과 리뷰 |
실제 폴더와 차이점
1
2
3
4
5
6
7
8
9
10
11
12
일반 폴더:
📁 my-project/
├── index.html
└── style.css
GitHub Repository:
📦 my-project/ (Repository)
├── index.html
├── style.css
├── README.md (프로젝트 설명서)
├── .git/ (버전 관리 정보)
└── 히스토리 (누가, 언제, 무엇을 변경했는지)
핵심 차이:
- ✅ 버전 관리: 모든 변경 이력 추적
- ✅ 협업 기능: 여러 사람이 동시 작업
- ✅ 백업: 클라우드 저장소로 안전 보관
해보기: 다른 사람의 Repository 둘러보기
1
2
3
4
1. GitHub 홈페이지 접속
2. 검색창에 "awesome-python" 입력
3. vinta/awesome-python Repository 클릭
4. 파일 목록, README, Issues, Pull requests 탭 둘러보기
결과: 인기있는 오픈소스 Repository의 구조를 파악할 수 있습니다
둘러볼 때는 코드만 보지 말고 About 영역도 확인하세요. Description, Website, Topics가 정리된 저장소는 검색과 이해가 훨씬 쉽습니다.
Topic2. Repository 구성 요소
Repository는 다양한 요소로 구성됩니다:
필수 요소
1. 파일과 폴더
1
2
3
4
5
프로젝트의 실제 코드와 리소스:
- 소스 코드 (.js, .py, .java 등)
- 설정 파일 (.json, .yml 등)
- 문서 (.md, .txt 등)
- 이미지/에셋 (.png, .svg 등)
2. README.md
1
2
3
4
5
프로젝트 소개서:
- 프로젝트 설명
- 설치 방법
- 사용 예제
- 기여 방법
3. Commits (커밋)
1
2
3
4
변경 이력의 스냅샷:
📸 Commit 1: "프로젝트 초기화"
📸 Commit 2: "로그인 기능 추가"
📸 Commit 3: "버그 수정"
선택 요소
4. .gitignore
1
2
3
4
Git이 무시할 파일 목록:
node_modules/
.env
*.log
5. LICENSE
1
2
3
4
오픈소스 라이선스:
- MIT: 자유롭게 사용 가능
- GPL: 수정 시 소스 공개 필요
- Apache: 특허 보호 포함
6. Issues / Pull Requests
1
2
3
협업 도구:
- Issues: 버그 리포트, 기능 요청
- Pull Requests: 코드 변경 제안
메타데이터도 중요합니다
Repository 오른쪽 또는 상단의 About 영역에는 프로젝트를 설명하는 정보가 들어갑니다.
- Description: 프로젝트를 한 문장으로 설명
- Website: 배포 URL 또는 문서 URL
- Topics:
react,portfolio,cli같은 검색 키워드 - Releases: 사용자가 받을 수 있는 버전
- Packages/Deployments: 배포와 패키지 정보
좋은 저장소는 파일 목록을 열기 전에도 “무엇을 하는 프로젝트인지” 알 수 있습니다. Phase 2에서는 코드를 쓰는 것만큼 이 설명 정보를 정리하는 연습도 중요합니다.
해보기: 아무 Repository에서 구성 요소 찾기
1
2
3
4
1. github.com/rails/rails 접속
2. README.md 찾아보기 (↓ 스크롤하면 보임)
3. LICENSE.md 파일 클릭
4. "Commits" 링크 클릭해서 히스토리 확인
결과: Repository의 기본 구조를 이해할 수 있습니다
Topic3. Public vs Private Repository
GitHub에는 두 가지 저장소 유형이 있습니다:
Public Repository (공개)
1
2
3
4
5
6
7
8
9
10
11
특징:
✅ 누구나 볼 수 있음
✅ 검색 가능
✅ 무료 무제한
✅ 오픈소스에 적합
사용 예:
- 오픈소스 라이브러리
- 포트폴리오 프로젝트
- 학습 자료
- 블로그/문서
장점:
- 🌟 포트폴리오: 취업/이직 시 코드 실력 증명
- 🤝 협업: 전 세계 개발자와 협업 가능
- 📈 성장: 피드백 받고 배울 수 있음
- ⭐ 인지도: Star 받으면 동기부여
단점:
- ⚠️ 보안: 비밀번호, API 키 노출 주의
- ⚠️ 저작권: 코드 복사/도용 가능성
- ⚠️ 미완성 노출: 설명이 부족하면 오해를 살 수 있음
Private Repository (비공개)
1
2
3
4
5
6
7
8
9
10
11
특징:
✅ 나와 초대한 사람만 볼 수 있음
✅ 검색 불가
✅ 무료 계정도 무제한
✅ 회사/개인 프로젝트에 적합
사용 예:
- 회사 프로젝트
- 개인 메모
- 민감한 정보 포함
- 완성 전 프로젝트
장점:
- 🔒 보안: 외부 노출 걱정 없음
- 🚧 WIP: 완성 전에도 안전하게 작업
- 💼 업무: 회사 코드 관리
단점:
- ❌ 포트폴리오 불가: 외부에서 볼 수 없음
- ❌ 협업 제한: 초대한 사람만 참여
비교표
| 구분 | Public | Private |
|---|---|---|
| 가격 | 무료 | 무료 |
| 가시성 | 전체 공개 | 초대자만 |
| 용도 | 오픈소스, 포트폴리오 | 회사, 개인 프로젝트 |
| 검색 | 가능 | 불가능 |
| Star | 가능 | 불가능 |
선택 기준은 간단합니다.
1
2
포트폴리오/학습 기록/오픈소스 → Public
회사 코드/개인정보/비밀 키/미완성 실험 → Private
Public으로 만들기 전에는 반드시 .env, API 키, 개인 정보, 유료 에셋이 들어 있지 않은지 확인하세요. 한 번 공개 저장소에 올라간 비밀 값은 삭제해도 이미 노출됐다고 생각하고 회전해야 합니다.
해보기: Public Repository 탐색하기
1
2
3
4
1. GitHub 검색창에 관심 기술 검색 (예: "react todo")
2. Star 개수 많은 Repository 클릭
3. Code, Issues, Pull requests 탭 둘러보기
4. Star 버튼 눌러보기 (⭐)
결과: Public Repository의 오픈소스 문화를 경험할 수 있습니다
실전 판단 연습
아래 프로젝트는 Public과 Private 중 무엇이 좋을까요?
| 프로젝트 | 추천 | 이유 |
|---|---|---|
| 개인 포트폴리오 웹사이트 | Public | 코드와 결과물을 보여주기 좋음 |
| 회사 내부 매출 대시보드 | Private | 업무 데이터와 내부 로직 포함 |
| 알고리즘 풀이 기록 | Public | 학습 기록으로 활용 가능 |
| API 키가 들어간 실험 코드 | Private | 먼저 비밀 값 제거 필요 |
정답보다 중요한 것은 판단 기준입니다. 공개해도 되는 정보인지, 다른 사람이 봤을 때 설명이 충분한지, 라이선스가 필요한지 함께 생각하세요.
정리
완료 체크:
- Repository가 일반 폴더와 어떻게 다른지 설명할 수 있다
- Repository의 주요 구성 요소를 알고 있다
- Public과 Private의 차이를 이해했다
- About, Topics, README의 역할을 설명할 수 있다
- 공개 저장소에 올리면 안 되는 정보를 구분할 수 있다
핵심 요약:
1
2
3
4
Repository = 프로젝트 보관함
- 파일 + 버전 히스토리 + 설명 문서 + 협업 도구
- Public: 포트폴리오, 오픈소스
- Private: 회사, 개인 프로젝트
