본문 바로가기
Computer Science

[git] pull request 하는 방식 2가지: write 권한이 있을 때 / 없을 때

by sohyunwriter 2021. 6. 9.

PR(Pull Request)에는 다음과 같이 두 가지 방식이 있다.

 

1) write 권한이 있는 repository의 원본 저장소를 받아 작업 후 PR

예) 내게 write 권한이 있으며, 여러 사람이 작업하는 사내 프로젝트의 경우

 

2) write 권한이 없는 repository의 fork 저장소를 받아 작업 후 PR

예) 오픈소스처럼 write 권한이 없는 프로젝트에 기여하고 싶을 때

 


첫번째 방식 - 원본(origin) 저장소를 바로 clone해서 작업하기

 

1. git repository 받아오기

git clone <clone url>

 

2-1. 작업 branch 만들기

git branch my_branch

 

(참고) branch 제대로 만들어졌는지 확인하는 방법

git branch

 

2-2. 작업중인 branch를 <my branch name>으로 바꾸기

git checkout my_branch

 

(참고) 2-1, 2-2를 한 번에 하는 법

git checkout -b my_branch

 

3. 내 작업 branch에 commit

add - commit - push 과정을 거친다.

 

1) 바로 원본 저장소(origin)의 master 브랜치에 내 코드를 올릴 때

git add <작업 파일명>
git commit -m "[add] testfile"
git push origin master

 

2) 바로 원본 저장소(origin)의 master 브랜치에 내 코드를 올리지 않고 작업 내용을 검토 받고 싶을 때

git add <작업 파일명>
git commit -m "[add] testfile"
git push origin my_branch

 

4. pull request

 

코드를 커밋하고 웹에서 repository에 접속하면 my_branch라는 곳에서 작업 내용을 push했다는 메시지가 화면에 뜬다.

그리고 우측에 "Compare & pull request"라는 버튼이 있는데, PR을 하려면 이 버튼을 누르면 된다.

 

그리고 버튼을 눌렀을 때 나오는 창에 내가 원본 브랜치에 합치려는 내용에 대한 간단한 설명을 추가하고, 

"Create pull request" 버튼을 누른다.

 

 

5. 기다리기

 

이제 작업내용이 검토를 마치고 머지할 때까지 기다리면 된다.

코드의 merge 권한이 있는 사람에게는 PR에서 "Merge pull request" 버튼이 뜬다.

 

프로젝트장이 self-merge 해도 된다고 하면 "Merge pull request" 버튼을 본인이 누르면 되고, 

self-merge 하지 말라고 하면 프로젝트장이 merge 할 때까지 기다리면 된다!!

 


두 번째 방식 - 원본(origin) 저장소를 바로 fork 받아서 작업하기

 

1. git repository fork 받기

fork 버튼을 눌러서 개인 계정 밑으로 저장소의 사본을 생성한다.

 

2~3. 첫 번째 방식과 동일

저장소를 clone 받고, branch를 만들고, 작업이 완료되면 push하면 된다.

 

4. PR

fork한 저장소에서 작업을 한 다음 변경사항을 commit하고 웹 브라우저로 가면 PR 버튼이 활성화된다.

다만 현재 위치는 원본 저장소가 아닌 fork 받은 나만의 저장소이다.

하지만 Compare & pull request 버튼을 누르면 원본 저장소로 PR 요청을 생성하게 된다.

 

즉, 첫 번째 방식에서는

origin의 my_branch -> origin의 master 브랜치에 PR 요청을 하는 거라면, 

두 번째 방식에서는 

내가 fork한 repository의 my_branch -> origin의 master 브랜치에 PR 요청을 하는 거다.

따라서 PR 코펜트를 성의있게 작성하자!!

 

5. upstream 설정하기

 

원본 저장소와 fork 저장소를 동기화하기 위한 작업을 진행해두면 좋다.

 

(참고) 원격 저장소 목록 확인 방법

git remote -v

 

5-1. 원격 저장소의 위치를 인식할 수 있도록 등록해둔다.

git remote add <원본저장소의 별칭(맘대로 이름지어도 됨)> <git url>

 

5-2. 그리고 원본 저장소와 내 저장소를 동기화시킨다.

git fetch <원본저장소의 별칭(맘대로 이름지어도 됨)>

 

 

 

-참고문헌