[이제와서 시작하는 GitHub 마스터하기 - 기초편 #14] Fork와 Clone: 오픈소스 기여의 시작
[이제와서 시작하는 GitHub 마스터하기 - 기초편 #14] Fork와 Clone: 오픈소스 기여의 시작
학습 목표
이 장을 마치면 다음을 할 수 있습니다:
- ✅ Fork와 Clone의 차이를 이해할 수 있습니다
- ✅ 오픈소스 프로젝트를 Fork할 수 있습니다
- ✅ 저장소를 Clone하여 로컬에서 작업할 수 있습니다
- ✅ Upstream과 Origin을 관리할 수 있습니다
지난 편 복습
기초편 #13에서는 브랜치 전략을 배웠습니다:
- 주요 브랜치 전략 이해 (Git Flow, GitHub Flow)
- 프로젝트에 맞는 전략 선택
- 효율적인 협업 워크플로우 구축
- 브랜치 네이밍 컨벤션
⚠️ 중요: 이제부터 터미널을 사용합니다!
지금까지의 학습 방식
#1편~#13편까지 우리는 GitHub 웹 인터페이스만으로 작업했습니다:
- ✅ 웹 브라우저에서 파일 추가/수정
- ✅ 웹에서 커밋 메시지 작성
- ✅ 웹에서 브랜치 생성/병합
- ✅ 웹에서 Pull Request 생성
이제부터는 터미널(명령어)을 사용합니다!
왜 터미널을 사용하나요?
- 🚀 대용량 프로젝트: 수백 개의 파일을 한 번에 관리
- 🔄 복잡한 작업: 브랜치 전환, 충돌 해결, 히스토리 관리
- 🤝 팀 협업: 실제 개발 현장에서는 터미널 사용이 필수
- ⚡ 효율성: 반복 작업을 자동화하고 빠르게 처리
준비물 체크리스트
시작하기 전에 다음을 확인하세요:
- Git 설치 완료 (기초편 #7 참고)
1 2 3
# 설치 확인 git --version # git version 2.x.x 이상
- 터미널 앱 준비
- Mac: 기본 Terminal 또는 iTerm2
- Windows: Git Bash (Git 설치 시 포함)
- Linux: 기본 터미널
- SSH 키 설정 권장 (기초편 #3 참고)
- 매번 비밀번호 입력 없이 편리하게 작업
- HTTPS도 가능하지만 SSH 권장
💡 처음 터미널을 사용하시나요?
걱정하지 마세요! 다음 내용을 천천히 따라하면 됩니다:
- 복사-붙여넣기 OK: 명령어를 정확히 복사해서 사용하세요
- 에러 괜찮음: 에러 메시지는 학습 과정의 일부입니다
- 한 줄씩 실행: 여러 명령어를 한 번에 실행하지 마세요
- 결과 확인: 각 명령어 실행 후 결과를 꼭 확인하세요
📚 복습 추천: 터미널이 처음이라면 기초편 #7의 “터미널 기본 사용법” 섹션을 먼저 복습하세요!
Fork vs Clone
Fork (포크)
개념: GitHub에서 다른 사람의 저장소를 내 계정으로 복사
graph LR
A[Original Repo<br/>owner/project] -->|Fork| B[My Fork<br/>myname/project]
B -->|Clone| C[Local]
특징:
- 🌐 GitHub 서버에서 복사
- 👤 내 계정에 독립적인 저장소 생성
- 🔗 원본과 연결 유지
- 🤝 오픈소스 기여에 필수
Clone (클론)
개념: 원격 저장소를 로컬 컴퓨터로 복사
graph LR
A[Remote Repo<br/>GitHub] -->|Clone| B[Local Repo<br/>내 컴퓨터]
특징:
- 💻 로컬에서 작업 가능
- 🔄 push/pull로 동기화
- 📂 전체 히스토리 다운로드
비교표
| 항목 | Fork | Clone |
|---|---|---|
| 위치 | GitHub 서버 | 로컬 컴퓨터 |
| 용도 | 오픈소스 기여 | 로컬 작업 |
| 권한 | 읽기만 가능 (원본) | 읽기/쓰기 (내 저장소) |
| 관계 | 원본과 독립 | 원격과 연결 |
Fork 사용법
1. Fork하기
GitHub에서:
1
2
3
4
1. 원본 저장소 방문 (예: github.com/original-owner/project)
2. 우측 상단 "Fork" 버튼 클릭
3. 내 계정 선택
4. 복사 완료 (github.com/myname/project)
2. Fork한 저장소 Clone
1
2
3
4
5
6
7
8
9
10
11
# HTTPS 방식
git clone https://github.com/myname/project.git
# SSH 방식
git clone git@github.com:myname/project.git
# 특정 브랜치만
git clone -b branch-name https://github.com/myname/project.git
# 폴더명 지정
git clone https://github.com/myname/project.git my-folder
3. Upstream 설정
원본 저장소를 추적하기 위해:
1
2
3
4
5
6
7
8
9
10
11
cd project
# 원본 저장소를 upstream으로 추가
git remote add upstream https://github.com/original-owner/project.git
# 확인
git remote -v
# origin https://github.com/myname/project.git (fetch)
# origin https://github.com/myname/project.git (push)
# upstream https://github.com/original-owner/project.git (fetch)
# upstream https://github.com/original-owner/project.git (push)
4. 최신 상태 유지
1
2
3
4
5
6
7
8
9
10
11
12
# upstream에서 최신 코드 가져오기
git fetch upstream
# main 브랜치 업데이트
git checkout main
git merge upstream/main
# 또는 한 번에
git pull upstream main
# 내 Fork에 반영
git push origin main
Clone 사용법
Clone 방식 선택: HTTPS vs SSH
Clone을 시작하기 전에 어떤 방식을 사용할지 선택해야 합니다.
| 항목 | HTTPS | SSH |
|---|---|---|
| 설정 | 설정 불필요 | SSH 키 등록 필요 |
| 인증 | 매번 입력 (토큰/비밀번호) | 한 번만 설정 |
| 보안 | 좋음 | 매우 좋음 |
| 속도 | 보통 | 빠름 |
| 방화벽 | 문제 없음 | 차단될 수 있음 |
| 권장 대상 | 처음 시작하는 분 | 정기적으로 사용하는 분 |
초보자 추천 순서
- 처음에는 HTTPS로 시작 (빠르게 시작 가능)
- SSH 키 설정 (기초편 #3 참고)
- SSH로 전환 (편리함을 위해)
💡 팁: 회사 방화벽이 SSH를 차단하는 경우 HTTPS를 사용하세요. 대부분의 경우 SSH가 더 편리합니다!
기본 Clone
1
2
3
4
5
# HTTPS (간편, 매번 인증)
git clone https://github.com/username/repo.git
# SSH (한 번 설정, 편리)
git clone git@github.com:username/repo.git
Clone 옵션
1
2
3
4
5
6
7
8
9
10
11
# 얕은 클론 (최근 커밋만, 빠름)
git clone --depth 1 https://github.com/username/repo.git
# 특정 브랜치만
git clone -b develop https://github.com/username/repo.git
# 서브모듈 포함
git clone --recurse-submodules https://github.com/username/repo.git
# 특정 폴더로
git clone https://github.com/username/repo.git my-project
Clone 후 작업
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 1. 디렉토리 이동
cd repo
# 2. 상태 확인
git status
# 3. 브랜치 확인
git branch -a
# 4. 작업 시작
git checkout -b feature/my-feature
# 5. 작업 및 커밋
git add .
git commit -m "feat: add new feature"
# 6. 푸시
git push origin feature/my-feature
오픈소스 기여 워크플로우
완전한 기여 과정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# === 1단계: Fork & Clone ===
# GitHub에서 Fork 버튼 클릭
# Clone
git clone https://github.com/myname/project.git
cd project
# Upstream 설정
git remote add upstream https://github.com/original-owner/project.git
# === 2단계: 최신 코드 동기화 ===
git fetch upstream
git checkout main
git merge upstream/main
# === 3단계: 브랜치 생성 및 작업 ===
git checkout -b feature/awesome-feature
# 작업...
git add .
git commit -m "feat: add awesome feature"
# === 4단계: 푸시 ===
git push origin feature/awesome-feature
# === 5단계: Pull Request ===
# GitHub에서 PR 생성
# original-owner/project ← myname/project:feature/awesome-feature
# === 6단계: 리뷰 반영 ===
# 피드백에 따라 수정
git add .
git commit -m "fix: apply review feedback"
git push origin feature/awesome-feature
# === 7단계: 병합 후 정리 ===
# PR이 병합되면
git checkout main
git pull upstream main
git push origin main
git branch -d feature/awesome-feature
git push origin --delete feature/awesome-feature
Remote 관리
Remote 확인
1
2
3
4
5
6
# Remote 목록
git remote -v
# Remote 상세 정보
git remote show origin
git remote show upstream
Remote 추가/변경/삭제
1
2
3
4
5
6
7
8
9
10
11
# 추가
git remote add upstream https://github.com/owner/repo.git
# URL 변경
git remote set-url origin https://github.com/newname/repo.git
# 삭제
git remote remove upstream
# 이름 변경
git remote rename origin my-origin
자주 묻는 질문 (FAQ)
Q1. Fork와 Clone 중 뭐부터 해야 하나요?
A: 순서:
- GitHub에서 Fork (권한 없는 저장소)
- 로컬로 Clone (내 Fork를)
- Upstream 설정 (원본 추적)
Q2. Fork 없이 Clone만 하면 안 되나요?
A: 권한에 따라 다릅니다:
- ✅ 내 저장소: Clone만으로 충분
- ❌ 남의 저장소: Fork 필수 (push 권한 없음)
Q3. Fork한 저장소를 원본과 계속 동기화해야 하나요?
A: 네, 권장합니다:
1
2
3
4
5
# 정기적으로 (주 1회)
git fetch upstream
git checkout main
git merge upstream/main
git push origin main
Q4. Clone이 너무 느려요!
A: 얕은 클론 사용:
1
2
3
4
5
# 최근 커밋만 (빠름)
git clone --depth 1 https://github.com/user/repo.git
# 나중에 전체 히스토리 가져오기
git fetch --unshallow
Q5. HTTPS vs SSH 중 뭐가 좋나요?
A:
- HTTPS: 간편, 방화벽 문제 없음, 매번 인증
- SSH: 한 번 설정 후 편리, 보안 좋음
권장: SSH (기초편 #3 참고)
실습 과제
과제 1: Fork & Clone 연습
- 유명한 오픈소스 프로젝트 찾기
- Fork하기
- Clone하기
- Upstream 설정
git remote -v확인
과제 2: 동기화 연습
- Upstream에서 최신 코드 가져오기
- main 브랜치 업데이트
- 내 Fork에 푸시
- GitHub에서 확인
과제 3: 모의 기여
- Fork한 프로젝트에서 브랜치 생성
- README에 내 이름 추가
- 커밋 및 푸시
- (실제 PR은 생성하지 말 것)
마무리
축하합니다! Fork와 Clone을 마스터했습니다.
핵심 요약:
- ✅ Fork: GitHub에서 내 계정으로 복사
- ✅ Clone: 로컬 컴퓨터로 복사
- ✅ Upstream: 원본 저장소 추적
- ✅ 워크플로우: Fork → Clone → Upstream → 작업 → PR
다음 편에서는 Pull Request를 배워보겠습니다!
📚 GitHub 마스터하기 시리즈
🌱 기초편 (입문자)
- GitHub 소개와 계정 만들기
- 프로필 꾸미기와 포트폴리오
- 보안 설정과 인증
- Repository 이해하기
- README 작성법
- .gitignore와 라이선스
- 첫 커밋과 관리
- git add와 commit
- git push와 pull
- 실전 워크플로우
- Branch 기본
- Merge와 Rebase
- 브랜치 전략
- Fork와 Clone 👉 현재 글
- Pull Request
💼 실전편 (중급자)
🚀 고급편 (전문가)
- GitHub Actions 입문
- Actions 고급 활용
- Webhooks와 API
- GitHub Apps 개발
- 보안 기능 활용
- Packages 레지스트리
- Codespaces 클라우드 개발
- GitHub CLI 마스터
- Insights와 Analytics
🏆 심화편 (전문가+)
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
