본문 바로가기
개발도구

Git ] fork 와 pull request 로 협업 과정

by eteo 2022. 9. 7.

 

 

팀장이 만들어둔 private repository를 팀원이 fork하고 수정작업 후 pull request를 보내고 팀장이 코드 리뷰 후 merge 하는 상황을 가정.

 

 

 

 

진행과정

 

 

팀장 : 자신의 repository에 팀원 초대

깃허브 Settings - collaborators

팀원 : 초대수락 및 fork

gmail에서 초대장 수락하고 fork 해서 자신의 깃허브로 가져옴

팀원 : clone

fork한 원격 레파지토리를 자신의 local workspace에 clone해서 가져옴

팀원 : 팀장의 원격 저장소를 remote로 등록해두기

clone하면 내 원격 저장소가 origin으로 설정되어 있는데 팀장의 원격 저장소와도 동기화되야 하기 때문에 remote에 포크한 원본 원격저장소를 추가해둔다. 보통은 upstream 이란 별명으로 추가한다.

팀원 : 새 branch 생성

개발용 브랜치를 새로 만든다. 현업에서는 브랜치를 만들어 거기서 작업한 뒤 작업이 완료되면 삭제하는 식으로 진행한다.

팀원 : 수정 작업 후 add, commit, push

항상 수정 작업 전에 팀장의 원격 저장소의 업데이트가 있는지 fetch로 확인하고 full 로 merge하여 동기화한다. commit 시에는 새로만든 개발용 브랜치에서 해야하고 원격 origin 레파지토리로 push 한다.

팀원 : pull request

자신의 깃허브 레파지토리에 가면 새로 생성한 브랜치가 보이고 pull request 버튼이 활성화 됐을 것이다. comment와 함께 pull request를 한다.

팀장 : 코드리뷰 후 merge

깃허브에 들어가면 pull request가 있다는 알람이 뜬다. 확인 후 merge 할 지 reject 할 지 선택한다.

팀원 : 동기화 및 branch 삭제

팀장의 원격 저장소화 동기화하고 작업하던 개발용 브랜치는 더이상 사용하지 않으므로 삭제한다.

 

 

 

 

 

 

팀원 입장 요약.

1. 팀장의 원격 리파지토리를 내 GitHub로 포크(fork)한다.

2. 포크한 원격 리파지토리를 로컬 컴퓨터로 클론(clone)한다. 

3. 로컬 리파지토리에서 새로운 브랜치를 생성한다. 이 브랜치는 새로운 변경 내용을 추가할 브랜치이다.

4. 로컬 리파지토리에서 변경 내용을 추가하고, 커밋(commit)한다. (변경한 브랜치 사용)

5. 원격 리파지토리로 변경 내용을 푸시(push)한다. (변경한  브랜치 사용)

6. GitHub에 들어가 포크한 원격 리파지토리에서, 변경한 브랜치를 선택하고 "New pull request" 버튼을 클릭한다. pull request 내용을 작성하고 제출한다.

 

 

 

참고 :

https://chanhuiseok.github.io/posts/git-3/

https://inpa.tistory.com/entry/GIT-%E2%9A%A1%EF%B8%8F-%EA%B9%83%ED%97%99-PRPull-Request-%EB%B3%B4%EB%82%B4%EB%8A%94-%EB%B0%A9%EB%B2%95-folk-issue