Fork란?
다른 사람의 저장소를 내 계정으로 복사하는 것입니다.
원본 저장소는 내가 직접 수정할 수 없습니다. 하지만 Fork하면 내 계정에 복사본이 생기고, 거기서 자유롭게 수정할 수 있습니다. 수정이 완료되면 원본 저장소에 Pull Request를 보냅니다.
원본 저장소 내 Fork
(다른 사람의 계정) (내 계정)
│ │
└──── Fork ─────────────▶│
│ 수정
│
◀──── Pull Request ───────┘
이것이 오픈소스 기여의 기본 흐름입니다.
Fork하기
- 기여하고 싶은 저장소 페이지로 이동
- 오른쪽 상단 Fork 버튼 클릭
- Create fork 클릭
이제 github.com/내계정/저장소이름에 복사본이 생겼습니다.
Fork한 저장소에서 작업하기
내 Fork에서 브랜치를 만들고 수정합니다.
- Fork된 저장소에서 새 브랜치 만들기:
fix-typo - 수정할 파일 찾기 (예:
README.md의 오타 수정) - 파일 수정 후 커밋
중요: 항상 브랜치에서 작업합니다. Fork의 main을 직접 수정하면 나중에 원본과 동기화가 복잡해집니다.
원본 저장소에 PR 보내기
- Fork된 내 저장소 페이지로 이동
- Contribute → Open pull request 클릭
- PR 제목과 설명 작성
좋은 오픈소스 PR 설명:
제목: fix: README의 설치 명령어 오타 수정
내용:
## 변경 사항
`npm insatll` → `npm install` 오타 수정
## 동기
설치 가이드를 따라하다가 오타를 발견했습니다.
- Create pull request 클릭
이제 원본 저장소 관리자(maintainer)가 리뷰 후 병합 여부를 결정합니다.
오픈소스 기여 예절
기여를 환영받으려면 프로젝트의 규칙을 따라야 합니다.
기여 전 확인:
CONTRIBUTING.md파일이 있으면 먼저 읽기- 이미 같은 Issue/PR이 있는지 확인
- 큰 변경은 먼저 Issue로 제안하고 피드백 받기
PR 작성 시:
- 작은 단위로 나누기 (한 PR에 너무 많은 변경 금물)
- 왜 이 변경이 필요한지 설명
- 코드 스타일은 프로젝트 기준 따르기
리뷰 피드백 받을 때:
- 수정 요청은 비판이 아닙니다 — 기여를 도와주는 것입니다
- 이유가 있으면 정중하게 의견 나누기
- 반영할 부분은 빠르게 반영하기
"왜?" — 오픈소스 기여가 가져다주는 것
오픈소스 기여는 단순히 코드를 고치는 게 아닙니다.
실력 향상: 수천 명이 사용하는 실제 프로젝트의 코드를 읽고 수정합니다. 교과서에서 배우지 못한 것들을 배웁니다.
이력서: "React 기여자"는 강력한 이력입니다. github.com/facebook/react의 커밋에 내 이름이 올라갑니다.
네트워킹: 전 세계 개발자들과 협업합니다. 오픈소스를 통해 취업이 된 사례도 많습니다.
처음에는 오타 수정, 문서 개선처럼 작은 것부터 시작하세요. 기여 경험 자체가 중요합니다.
심화 학습
Fork를 최신 상태로 유지하기
원본 저장소에 새 커밋이 생기면 내 Fork는 뒤처집니다. 동기화하는 방법:
내 Fork 페이지에서 Sync fork → Update branch 클릭.
원본의 최신 변경사항이 내 Fork에 반영됩니다. PR을 보내기 전에 항상 동기화하는 것이 좋습니다.
첫 기여로 좋은 프로젝트 찾기
처음 오픈소스에 기여하고 싶다면:
- first-contributions: 기여 연습용 저장소
- good-first-issues.github.io:
good first issue레이블 이슈 모음 - 내가 쓰는 도구의 GitHub 저장소: 문서 개선부터 시작
한국어 문서 번역도 좋은 시작점입니다.
- GitHub에서 아무 공개 저장소를 Fork하세요 (예: 입문용 연습 저장소).
- Fork된 저장소에서 새 브랜치를 만들고 파일 하나를 수정하세요.
- 원본 저장소로 Pull Request를 열어보세요 (실제로 병합되지 않아도 됩니다).
Q1. Fork와 Branch의 차이로 올바른 것은?
- A) Fork는 같은 저장소 내에서 복사하고, Branch는 다른 계정으로 복사한다
- B) Fork는 다른 계정으로 저장소를 복사하고, Branch는 같은 저장소 내에서 작업 흐름을 분리한다
- C) Fork와 Branch는 동일한 기능이다
- D) Fork는 파일을 삭제하고, Branch는 파일을 추가한다