[GIT] GITHUB - PR(pull request) 해보기

[GIT] GITHUB - PR(pull request) 해보기

오픈소스에 기여 할수있는 PR에 대해 알아보자

1.PR (pull request)란

PR 이란 내가 작업한 코드가 있으니 내 브랜치를 당겨 검토 후 병합해주세요 라는 요청을 원본 저장소에 요청하는 것으로 여러개의 원격 저장소끼리의 코드 병합 방법으로 이해하면 쉽습니다.

당연히 react 나 vue 와 같은 대형 프로젝트 같은 경우에는 Contributing Guide 부분이 따로 목차에 소개되어 있습니다. 아래의 링크를 한번 읽어보시는 것도 좋습니다.

React Contributing Guide Link

2. PR 방법

2-1. 기여하려는 저장소를 fork 하기

프로젝트 포크는 개발자들이 하나의 소프트웨어 소스 코드를 통째로 복사하여 독립적인 새로운 소프트웨어를 개발하는 것을 말한다.

1) 먼저, 기여하고자 하는 저장소방문 합니다.

fork

2) 위의 그림에서와 같이 fork 버튼을 클릭한다.

fork2

3) 내 Repositories 목록에 위의 fork 마크 가 생긴 저장소가 생겼는지 확인한다.

2-2. 내 컴퓨터 저장소에 clone 하기

1) 로컬에 적당한 폴더 생성하여 fork 한 저장소 clone 하기

# file: "git bash"

$ git clone <fork url>

2-3 원격 저장소 Remote 설정하기

1) clone 해온 저장소에 원격 저장소 설정을 합니다 내가 PR보낼 곳 추가해주는 것을 의미 합니다.

2) 원격 저장소의 이름은 upstream 으로 지정하겠습니다. 여기서 원격저장소의 git 주소는 fork를 하기 전 원본 저장소를 의미 합니다.

# file: "git bash"

$ git remote add post(별명) <origin fork url>
$ git remote -v

3) 위의 작업은 추후에 fork 저장소를 원격 저장소의 최신 커밋으로 내용을 변경해야 하므로 진행해야합니다. 즉 나의 리파지토리 저장소를 원본저장소의 내용으로 pull 받기 위함입니다.

2-4 PR용 branch 생성하기

1) clone 해 온 저장소의 처음 branch는 기본적으로 master인데, 여기에 코드를 수정하고 PR을 보낼 용도로만 사용할 새로운 branch 를 생성해야합니다.

# file: "git bash"

$ git checkout -b <branch name>

2) 위의 명령어를 입력하면 체크 아웃과 동시에 브랜치가 생성됩니다. branch name 에는 원하는 name 을 입력하시면 됩니다.

2-5 코드 수정하기

1) 오픈소스에 기여할 부분을 삭제하거나 추가한후 commit 합니다.

# file: "git bash"

$ git add .
$ git commit -m "유효한 커밋 메세지"

2) 위처럼 유효한 커밋 메시지를 작성후 commit 합니다.

2-6 PR용 branch에 push 하기

1) 여기서 PR 용 branch 는 원본 저장소가아니라 fork 해온 저장소를 의미합니다.

# file: "git bash"

$ git push origin <branch name>

2) 위의 명령어에서 branch name 은 위에서 생성한 branch 명입니다.

2-7 fork 한 나의 Git Hub 사이트에 들어가기

1) 이제 github 사이트에서 fork해온 나의 저장소에 들어가 봅니다.

fork3

fork4

2) 첫번째 그림 또는 두번째 사진에서 Pull request 버튼을 클릭하세요

fork6

3) 위의 그림과 같은 화면이 뜨면 풀리퀘스트 메시지와 내용을 입력후 create pull request 버튼을 클릭합니다.

4) 오픈소스 프로젝트에서 나의 PR이 승인되어 merge될 때 까지 기다립니다.

2-8 PR 승인이 되었다면 branch 삭제하기

1) 내가 보낸 PR이 승인되어 메인 저장소에 merge 되었다면, 이제 위에서 생성한 PR용 branch는 작업이 끝났으니 삭제해도 됩니다.

# file: "git bash"

$ git pull post(remote 별명)
$ git branch -D <branch_name>

2) 위 명령어를 통해 동기화하고, 브랜치를 삭제한다. 3) 나중에 추가로 작업할 일이 있으면 git pull post(remote 별명) 명령을 통해 원본 저장소와 동기화를 진행하고 2-3~2-7을 반복한다.

3.정리

해보지 않으면 와닿지 않습니다. 바로 실습과 정리를 하셔서 협업의 중심 PR 을 익히시길 바랍니다.


© 2021. All rights reserved.