본문 바로가기

개발/Github

[Github] Fork부터 Pull Request까지

최근 Vue.js를 이용한 프로젝트에 Buefy라는 Bulma 기반의 UI Framework를 사용한 적이 있었다.

 

당시 Buefy의 Datepicker라는 기능을 사용하던 중 이벤트 이후 자동으로 Date Window가 열리는 버그를 발견했다.

 

처음엔 버그가 아닌 내 실수라고 생각하고 코드를 이리저리 수정해봤지만 현상은 바뀌지 않았고, 버그라고 확신이 든 후 해당 버그에 대한 Issue를 Buefy Github에 등록했다.

 

그리고 등록한 Issue에 답변이 달릴 때 까지 Buefy 프로젝트를 Fork해서 원인을 찾으려는 순간 3분만에 내가 등록했던 Issue가 Close 된 것을 확인했다.

 

내가 Issue를 잘못 등록했나 라는 생각과 함께 댓글을 확인한 결과 Buefy 개발자로부터 해당 버그는 1시간 전 새로운 버전으로 Fix 되었으니 버전을 업데이트 해보라는 말을 들을 수 있었다.

 

Buefy는 당시 0.7.5 버전으로 유저들의 적극적인 Contiribute와 함께 빠르게 업데이트 해가는 과정에 있었고, 나는 불과 몇일 전에 버전을 업데이트 했었기 때문에 그 사이에 버그가 픽스될 것이라는 생각을 하지 못했다.

 

결국 작성했던 Issue가 싱겁게 마무리 되어 아쉬웠지만 그래도 내가 사용하는 라이브러리에 대한 Issue를 남기고, 직접 개발자들과 소통하는 기분 좋은 경험이였다.

 

오픈소스 생태계가 활성화 되어 있는 지금 누구나 자신이 사용하고 있는 라이브러리, 나아가 서비스에 대한 Contiribute를 할 수 있다.

 

그리고 아직 Github가 낯선 개발자들에게 Contribute의 첫 걸음인 Fork부터 Pull Request에 대한 방법을 소개하려 한다.

 

 

 

시작

 

이해를 돕기 위해 Buefy 저장소를 Fork하는 과정을 예시로 사용한다.
<> 안에 표시된 내용을 개인에 맞춰 수정 후 사용하자.
  • Fork할 프로젝트의 저장소로 들어간 후 화면 우측 상단에 위치한 Fork를 클릭한다.

  • 그러면 다음과 같이 자신의 계정으로 된 저장소에 Fork한 프로젝트가 생성된다.

 

  • 그리고 Fork로 생성된 저장소에서 Clone or download를 통해 URL을 확인하고 다음 명령어로 해당 저장소를 Clone 한다.

$ git clone <https://github.com/sangyeol-kim/buefy.git>

 

 

  • 다음 명령어로 원본 프로젝트 저장소의 이름을 지정하고 Remote 저장소로 추가한다.
$ git remote add <origin-repo> <https://github.com/buefy/buefy.git>

 

 

  • -v 옵션으로 설정된 원격 저장소를 확인해보자.
$ git remote -v

 

 

 

  • 이제 다음 명령어로 branch를 생성하자. branch는 기존의 코드와는 상관없는 독립적인 개발 환경을 도와준다. (branch는 특정 시점에서 파생되어 독립적인 코드를 유지할 수 있다.)
$ git branch <temp>

$ git checkout <temp>

// $ git checkout -b <temp> 명령어로 위의 과정을 축약할 수 있다.

 

 

  • temp branch에서 코드 수정을 한 후 Add, Commit을 하고 다음과 같이 origin 저장소에 해당 branch를 Push 한다.
$ git push origin <temp>

 

 

  • Push 후 자신의 계정에 생성된 저장소에 들어가서 확인해보면 Compare & pull request 버튼이 활성화 된 것을 확인할 수 있다. 해당 버튼을 클릭하고, 다음과 내용을 작성한 후 Create pull request 버튼을 통해 Pull Request를 생성한다.

 

 

 

  • 이후 원본 저장소의 관리자는 요청된 Pull Request를 확인하고, 해당 PR에 대한 Review를 남기거나 Merge 한다.
    Merge 이후에는 다음 명령어로 로컬 저장소의 원하는 브런치에 동기화하는 작업을 하면 된다.
$ git pull <origin-repo>

 


 

 

 

안녕하세요. 평범한 대학생 개발자 yorr입니다.

포스팅을 읽고 궁금한 점 또는 문의가 있으신 분은 메일 또는 댓글을 남겨주세요.

 

Mail: twysg@likelion.org

Github: https://github.com/sangyeol-kim