COMPUTER SCIENCE

오픈소스에 기여하는 법/ Github, Pull Request? Fork?

24_bean 2023. 5. 1. 22:04

오픈소스에 기여하는 방법 중 하나는 GitHub를 통해 Pull Request를 보내는 것이다. 

 

이를 위해서는 다음과 같은 절차를 따른다.

 


절차

 

1. 해당 오픈소스 프로젝트의 GitHub 저장소를 Fork. 이를 통해 자신의 GitHub 계정으로 해당 프로젝트의 코드를 가져올 수 있다.

2. Fork한 저장소를 로컬 컴퓨터로 Clone.

3. 로컬에서 코드를 수정하고, 변경사항을 Commit.


4. Fork한 원래 저장소와 동기화하기 위해 원래 저장소를 Remote로 추가.

 

git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

 

5. Fork한 원래 저장소의 변경사항을 가져오고, 자신의 Fork 저장소와 Merge.

git fetch upstream
git merge upstream/master


6. 변경사항을 자신의 Fork 저장소에 Push.

git push origin master


7. GitHub 웹사이트에서 자신의 Fork 저장소로 이동하여 Pull Request 버튼.

8. 변경사항을 설명하는 제목과 내용을 작성한 후, Pull Request를 보낸다.

이렇게 보낸 Pull Request는 원래 저장소의 소유자가 확인하고 Merge할 수 있다.

 


Fork?

 

 

 

Github의 기능 중 하나로, 다른 개발자가 만든 오픈소스 프로젝트를 자신의 GitHub 계정으로 복사하는 것을 말한다.

Fork한(포크로 찍어온) 저장소는 개인 Repository로 들어오며, 해당 저장소는 자신이 자유롭게 수정하거나 개발할 수 있으며, 원래 repository와는 독립적으로 관리된다.

 

가령 기존에 진행되던 프로젝트 P에서 한 사람이 개선점을 발견했고, 이를 수정하고자 한다.

이때, 그 사람은 Fork하여 자신의 Github계정으로 해당 저장소(Repository)를 복사하고 코드를 수정한 이후 변경사항을 Push한다

 

이때 필요한 작업이 Pull Request이다.

 

Fork를 사용하면 다른 개발자가 만든 오픈소스 프로젝트를 쉽게 가져와서 수정하고 개발할 수 있다.

또한 Fork한 저장소는 원래 저장소와 독립적으로 관리되기 때문에 자신이 원하는 방식으로 프로젝트를 관리할 수 있다.

 

이러한 이유로, Fork는 오픈소스 생태계에서 매우 중요한 역할을 한다.

 


Pull Request

 

 

 

Pull Request는 GitHub에서 제공하는 기능 중 하나로, 다른 개발자가 만든 오픈소스 프로젝트에 자신의 변경사항을 제안하고, 원래 저장소의 소유자가 해당 변경사항을 검토하고 병합할 수 있도록 요청하는 것이다.

 

좀 쉽게 표현하자면, 

"PR 쏜다" 라고 불리는 해당 작업은 말 그대로 Pull(당기도록) Request(요청)하는 것이다.

즉, 개선점이 발견되었을 때 기여자(contributor)는 수정사항을 받아들여달라고(Pull) 요청(Request)하는 것을 말한다.

 


 

가령 또 다시 위와 비슷한 예를 들어보자.

 

A라는 개발자가 오픈소스 프로젝트 P를 개발하고 있다.

B라는 개발자는 P를 사용하면서 개선점을 발견했고, 이를 수정하고자 한다.

 

이때 B는 P 저장소를 Fork하여 자신의 GitHub 계정으로 복사한다.

그리고 Fork한 저장소에서 코드를 수정하고 변경사항을 Push한다.

그리고 B는 원래 저장소에 변경사항을 반영하기 위해 Pull Request를 보낸다.

 

Pull Request를 보내면 원래 저장소의 소유자가 해당 변경사항을 검토하고, 코드를 Merge할 수 있다.

소유자는 Pull Request에서 변경사항을 검토하고, 코드를 수정해야 할 필요가 있다면 Pull Request의 댓글을 통해 의견을 주고받을 수 있다.

 

이렇게 코드 변경사항을 검토하고 Merge한 뒤, 변경사항이 원래 저장소에 적용된다.

 

Pull Request를 사용하면 다른 개발자가 만든 오픈소스 프로젝트에 자신의 코드 변경사항을 제안할 수 있다.

이를 통해 오픈소스 프로젝트는 다양한 개발자들이 기여하여 발전할 수 있다.

 


유의점

 

  • 최신 코드 기반 작업
  • 작업 내용을 명확히 기록
  • 작은 단위로 분리하여 PR을 보낸다
  • 테스트 코드 작성
  • 코드 리뷰 요청

 


적용

 

  • 작성자의 사례

 

https://github.com/MaximeVandegar/Papers-in-100-Lines-of-Code/pull/3

 

add comment on nerf.py by sabin5105 · Pull Request #3 · MaximeVandegar/Papers-in-100-Lines-of-Code

I just added some python comment not editing any source of yours. possibly to make it easy to understand for beginners I already know you have a full explanation on medium post but If there's some ...

github.com