본문 바로가기

프로그래밍 언어/오픈소스

오픈소스 프로젝트에 참여를 위한 컨트리뷰션 프로세스(오픈소스 기여 프로세스)

오픈소스의 기여하기 위한 간단한 가이드입니다.
깃허브에서 오픈소스 컨트리뷰션을 하기 위해서는 아래 10가지 단계를 숙지해야 합니다.

컨트리뷰션 라이프사이클(Contribution Lifecycle)

1. 리파지토리 Fork 하기

깃허브에 로그인한 수 컨트리뷰션 할 오픈소스 리파지토리를 Fork 하면 내 계정에 리파지토리 사본이 생성됩니다.
Fork를 하는 이유는 원본 코드(메인 리파지토리)를 망칠 염려 없이 안전하게 소스코드를 변경하고 Push 할 수 있기 때문입니다.
Fork를 하는 방법은 메인 리파지토리 상단에 Fork버튼을 클릭하면 됩니다.

2. Fork 한 리파지토리를 Clone 하기

이제 오픈소스 리파지토리에서 Fork 한 리파지토리를 Clone 하여 로컬 컴퓨터에 소스코드를 가져옵니다.
Clone 할 때는 HTTPS나 SSH를 이용할 수 있고, 깃허브 상단의 Code버튼을 클릭하면 Clone 명령어를 복사해서 붙여 넣을 수 있습니다.

위에서 복사한 명령을 터미널에 붙여 넣기를 해서 리파지토리를 Clone 합니다.

git clone git@github.com:account-name/opensource-project.git

3. feature 브랜치 만들기

소스코드를 수정하기 위해서는 새로운 브랜치를 만드는 게 좋습니다.
브랜치를 생성하면 마스터 브랜치를 깨끗한 상태로 유지할 수 있고 소스코드를 간단히 되돌릴 수 있습니다.
브랜치를 만들겠습니다.

Clone 한 리파지토리는 리파지토리 명의 디렉터리에 복제되므로 디렉토리 안으로 이동합니다.

cd opensource-project

이제 새로운 기능을 추가하기 위해 소스코드를 수정할 브랜치를 생성합니다.
브랜 치명은 new-feature로 하겠습니다.

git checkout -b new-feature

4. feature 브랜치에 수정한 내용 Commit 하기

새로운 파일을 만들었다면 add명령어 브랜치에 파일을 추가해줘야 합니다.

git add <filename>

새로운 파일도 추가하였고, 소스코드를 모두 수정하였다면, commit을 할 차례입니다.
특히, 각 오픈소스의 가이드라인에 맞춰 커밋 메시지를 작성해야 합니다.
커밋 메시지 가이드라인은 꼭 확인하세요.

git commit -m "Commit message here~!!!"

5. Fork 한 리파지토리 feature 브랜치 Push 하기

commit를 성공했다면 이제 Fork 리파지토리에 push를 해야 합니다.

git push origin new-feature

6. 메인 리파지토리에 Pull Request(PR) 만들기

Fork 한 리파지토리에 push까지 끝냈다면, Pull Request(PR)을 올려야 합니다.
새 PR을 시작하려면 Pull Reqeust버튼을 클릭하세요.

PR을 올리면 메인 리파지토리와 내가 수정한 사항이 비교되는 화면이 표시됩니다.
변경사항을 제출할 대는 변경한 내용과 설명을 추가할 수 있습니다.

7. 코드 리뷰(리뷰 코멘트)에 대응하고 Pull Request(PR) 병합하기

코드 관라자(Code maintainer)들은 변경사항에 대한 코드 리뷰(코멘트)를 할 것입니다.
소스코드의 기능적인 부분이나 서식, 포맷과 같은 부분을 지적(제안)할 수도 있습니다.
이러한 내용을 반연하여 소스코드를 push 하면 PR이 자동으로 업데이트됩니다.

변경사항에 문제가 없다면 코드 관리자는 PR을 메인 리파지토리에 병합합니다.
병합이 완료되면 당신은 이제 공식적인 오픈소스 컨트리뷰터입니다!^^

8. Clone 한 리파지토리에 메인 리파지토리를 upstream으로 등록하기

메인 리파지토리는 많은 다른 개발자들의 소스코드 수정사항을 병합합니다.
최신 코드를 사용하려면 Fork 한 저장소를 지속적으로 동기화해야 합니다.

Clone 한 리파지토리는 Fork한 리파지토리하고만 연결되어 있습니다.
동기화를 하기 위해서는 메인 리파지토리와도 연결이 필요합니다.
Clone한 리파지토리에 upstream으로 추가해 줍니다.

git remote add upstream git@github.com:opensource/opensource-project.git

주의) 오픈소스 리파지토리 주소는 각 오픈소소마다 다릅니다.

아래 명령어로 upstream이 잘 등록되었는지 확인 힙니다.

git remote -v

origin(원본)과 upstream이 올바른 리파지토리를 가리키고 있다면 아래와 같이 표시될 것입니다.

origin  git@github.com:account-name/opensource-project.git (fetch)
origin  git@github.com:account-name/opensource-project.git (push)
upstream        git@github.com:opensource/opensource-project. (fetch)
upstream        git@github.com:opensource/opensource-project. (push)

9. master 브랜치 업데이트하기

upstream 등록이 완료되면 다른 개발자들의 수정한 사항들을 가져올 수 있습니다.
아래 명령어로 로컬 리파지토리를 업데이트합니다.

git pull upstream master

10. Fork 리파지토리의 master 브랜치에 Push 하기

로컬 리파지토리의 업데이트가 되고 변경사항이 존재한다면 fork 한 리파지토리에도 업데이트해줘야 합니다.
아래 명령어로 fork 리파지토리를 업데이트합니다.

git push origin master

(옵션) 생성한 feature 브랜치 삭제하기

메인 리파지토리에 병합된 브랜치는 더 이상 필요하지 않기 때문에 삭제해도 됩니다.
삭제는 아래 명령어로 할 수 있습니다.

git branch -d new-feature

그리고 fork 한 원격 리파지토리에서도 브랜치를 삭제할 수 있습니다

git push origin --delete new-feature

마무리

깃허브에서 오픈소스 프로젝트에 기여하는 것은 동시에 수많은 개발자들이 같이 작업하기 때문에 까다로울 수 있습니다.
이 내용이 오픈소스에 기여하는데 도움이 됐으면 좋겠습니다.