이전까지는 Github에서 add, commit, push밖에 없었는데 이번에 오픈소스 컨트리뷰톤에 참여하게 되면서 fork를 통해 협업을 하는 방법을 알게되어 이에 대해 포스팅하려고 한다. 

 

procedure

- forkclone

- 브랜치 생성

- 코드 작성

- PR

 

fork, clone

먼저 프로젝트 레포에서 fork를 해서 자신의 Github에 복사한다.

 

 

예시를 들어 위의 typescript-eslint프로젝트에 들어가서 fork를 누르면 아래와 같이 자신의 Github에 'Forked from ...'이라고 적힌 프로젝트가 생성이 된다.

 

 

다음으로는 fork한 프로젝트를 자신의 로컬 저장소에 clone하자.

 

 

초록색 바탕의 Code를 누르고 fork한 레포의 url을 복사한다.

 

 

$ git clone url

 

브랜치 생성

fork를 통한 협업에서 master브랜치는 upstream(위에서 typescript-eslint)를 따라가기만 하면 된다. 따라서 master브랜치 말고 다른 브랜치를 생성하고, 해당 브랜치에서 개발을 한다. 먼저 협업할 프로젝트를 upstream으로 등록하자. 

 

$ git remote add upstream <프로젝트 url>
$ git remote -v

 

이때 위의 <프로젝트 url>은 fork한 레포가 아니라 원래 프로젝트 레포의 url을 작성하는 것에 주의한다. 그리고 브랜치를 생성하자.

 

$ git checkout -b 브랜치이름

 

위와 같이 입력하면 브랜치가 생성이 되고, 브랜치가 해당 브랜치로 옮겨졌을 것이다. 이제 이 브랜치에서 개발을 하면 된다. 코드 작성을 끝냈으면 push까지 현 브랜치에서 끝낸다.

 

$ git add .

$ git commit -m "msg"

$ git push origin 브랜치이름

 

이제 fork한 레포에 가면 다음과 같이 나타날 것이다.

 

출처: https://www.boldgrid.com/support/wordpress-tutorials/how-to-create-a-pull-request-on-a-github-repository/

 

Compare & pull request를 누른 후, PR template이 있으면 양식에 맞춰 작성을 하고 Create Pull Request를 누르면 PR 작성까지 완료를 하게 된다. 그리고 PR을 올린 후, 리뷰를 받고 코드를 수정해서 PR을 갱신해야하는 경우가 있다. 이럴 때에는 그냥 해당 브랜치에서 위와 똑같이 커밋하고 push하면 PR이 자동갱신된다.

 

Merge된 후

작성한 PR이 머지가 되면, master브랜치로 이동하여 upstream의 커밋 내역을 가져와서 동기화를 시켜준다.

 

$ git checkout master

$ git fetch upstream master

$ git rebase upstream/master

 

 

 

'Github' 카테고리의 다른 글

[Github] Issue, Pull Request 템플릿 만들기  (0) 2020.10.12

생강강

,