wan의 개발일기
오픈소스 기여하기 (fork, PR) 본문
들어가며
오픈소스 기여는 어렵게 느껴지는데, 실제로 흐름을 알고 나면 그리 복잡하지 않다.
코드 기여뿐 아니라 문서 수정, 번역, 버그 리포트도 모두 기여다. 전체 흐름을 정리해둔다.
오픈소스 기여 방식
기여 방식은 코드 작성 외에도 다양하다.
| 방식 | 예시 |
|---|---|
| 버그 리포트 | 재현 가능한 버그 Issue 등록 |
| 문서 수정 | 오탈자, 오역, 설명 보완 |
| 번역 | 문서 한국어 번역 |
| 코드 기여 | 버그 수정, 기능 추가 |
| 코드 리뷰 | 다른 사람 PR 리뷰 |
| 테스트 작성 | 누락된 테스트 코드 추가 |
기여 전 확인사항
CONTRIBUTING.md
대부분의 오픈소스 프로젝트는 기여 가이드를 제공한다. PR 전에 반드시 읽어야 한다.
확인 항목:
- 코드 스타일 규칙
- 브랜치 네이밍 컨벤션
- 커밋 메시지 규칙
- PR 작성 방법
- 테스트 실행 방법
Issue 확인
이미 같은 Issue가 등록되어 있거나 누군가 작업 중인지 확인한다.
- 기존 Issue 검색
- 작업 전 Issue에 코멘트 ("이 Issue 작업해도 될까요?")
- Maintainer 응답 확인 후 작업 시작
기여 흐름
1. 저장소 Fork
원본 저장소를 내 계정으로 복사한다.
GitHub 저장소 → Fork 버튼 클릭 → 내 계정에 복사본 생성
2. 로컬에 Clone
# 내 fork 저장소를 로컬에 clone
git clone https://github.com/내계정/저장소이름.git
cd 저장소이름
# 원본 저장소를 upstream으로 등록
git remote add upstream https://github.com/원본계정/저장소이름.git
# remote 확인
git remote -v
# origin https://github.com/내계정/저장소이름.git (fetch)
# origin https://github.com/내계정/저장소이름.git (push)
# upstream https://github.com/원본계정/저장소이름.git (fetch)
# upstream https://github.com/원본계정/저장소이름.git (push)
3. 최신 상태 동기화
# upstream의 최신 변경사항 가져오기
git fetch upstream
git switch main
git merge upstream/main
4. 브랜치 생성 후 작업
git switch -c fix/typo-in-readme
# 작업 후 커밋
git add .
git commit -m "docs: README 오타 수정"
5. Fork 저장소에 Push
git push origin fix/typo-in-readme
6. PR 생성
GitHub에서 내 fork 저장소로 이동하면 "Compare & pull request" 버튼이 표시된다.
base repository: 원본계정/저장소이름 ← head repository: 내계정/저장소이름
base: main ← compare: fix/typo-in-readme
7. 리뷰 및 반영
# 리뷰 피드백 반영 후
git add .
git commit -m "docs: 리뷰 피드백 반영"
git push origin fix/typo-in-readme
# PR이 자동으로 업데이트됨
upstream 동기화 유지
작업 중 원본 저장소에 변경사항이 생기면 충돌을 예방하기 위해 주기적으로 동기화한다.
git fetch upstream
git rebase upstream/main
# 또는
git merge upstream/main
좋은 첫 기여 찾기
GitHub 검색 필터:
- label:"good first issue"
- label:"help wanted"
- label:"beginner friendly"
예시 검색:
https://github.com/search?q=label%3A"good+first+issue"&type=Issues
처음 기여하기 좋은 프로젝트들도 있다.
- first-contributions (기여 연습용)
- awesome 시리즈 문서 기여
- 사용 중인 라이브러리의 문서 오타 수정
정리
| 단계 | 명령어 / 작업 |
|---|---|
| Fork | GitHub에서 Fork 버튼 클릭 |
| Clone | git clone <fork URL> |
| upstream 등록 | git remote add upstream <원본 URL> |
| 동기화 | git fetch upstream && git merge upstream/main |
| 브랜치 생성 | git switch -c <브랜치명> |
| Push | git push origin <브랜치명> |
| PR 생성 | GitHub에서 Compare & pull request |
'Git, Github > Github 심화' 카테고리의 다른 글
| Submodule & Monorepo 개념 (0) | 2026.05.04 |
|---|---|
| Git Hooks 활용하기 (0) | 2026.05.03 |
| GitHub Pages로 정적 사이트 배포 (0) | 2026.05.03 |
| GitHub Issues & Projects로 일감 관리 (0) | 2026.05.03 |
| GitHub Actions으로 CI/CD 입문 (0) | 2026.05.03 |