프로젝트를 진행하면서 팀원들의 이해를 돕고자 Fork와 PR 과정에 대해 정리를 하게 되었다.
Fork와 PR(Pull Request)
아래 그림과 같이 Pet-K-In repository와 개인 repository가 있다라고 가정해 보자.
누군가가 Pet-K-In Service 에 기여하고 싶어 할때 다른 사람의 저장소의 코드 변경하려면 해당 프로젝트의 관리자가 직접 나를 Contributor로 등록을 해주어야 한다.
모든 사람을 아무나 등록해 줄수는 없는 노릇이기에 이때 사용하는 것이 Fork의 기능이다.
Fork
Fork는 간단히 말해 타인의 저장소에 있는 레파지토리를 내 원격 저장소인 깃허브로 가져오는 것이다.
Fork를 진행하면 자신의 원격 저장소로 가져온 소스를 확인할 수 있고,
하단 그림과 같이 설정한 repository 명과 원본 소스의 위치를 확인할 수 있는 링크를 볼수 있다.
Fork 이후 내 로컬 대표적으로 git bash, IDE를 통해서 Clone 후 소스를 수정할수 있게 된다.
수정한 소스 내용을 Pet-K-In repository에 반영을 희망할때 Pull Request이다.
PR(Pull Request)
PR이란, 브랜치를 따서 수정한 소스를 가져가 리뷰 후에 반영해 달라고 요청하는 것이다.
이 기능을 통해 conflict를 최소화 하고, 권한이 없는 소스에 기여할 때 사용한다.
아래 실제 예제와 함께 부연 설명을 하겠다.
아래 그림은 현재 진행중인 Pet-K-In 프로젝트의 협업 방식에 이용된 흐름이다.
위에서 Fork를 했다는 가정과 쉬운 이해를 위해 IDE를 통해 진행되는 과정을 설명할 예정이다.
1. 내 로컬 repository에 clone
fork해온 repository의 clone 주소 복사
IDE를 통해 형상 관리를 통해 프로젝트를 가져오기 선택
clone할 repository주소를 붙여 넣고 우측 하단 버튼 클릭
2. master를 기준으로 브랜치 생성 후 소스 작업
master 를 기준으로 새로운 브랜치 생성
생성한 새로운 브랜치에서 소스 작업
3. 작업 내용 Commit 후 브랜치 원격 저장소에 Push
위 사진의 상단 빨간 박스를 보면 origin이라는 문구를 볼 수 있다. 관련 정보는 4번 remote 등록 참고
4. 원본 원격 저장소 Remote 등록
- IDE를 이용한 방법
1. git Remote 오른쪽 클릭

2. + 클릭하여 원격지 등록창 띄우기

3. 원본 저장소(Pet-K-In) 이름과 URL 등록하기

4. 등록한 remote fetch

5. 확인

- git bash를 이용한 방법
1. Terminal을 연다.

2. git bash로 변경

3. git remote -v 명령어를 통한 원격 저장소 확인
> origin이라는 이름을 가진 원격 저장소 주소지를 확인 할 수 있다.

4. 원격 저장소 추가 등록하는 방법
> git remote add [사용하고자 하는 이름] [원격 주소지] 형식의 명령을 통해 추가 가능하다.
ex) git remote add real https://github.com/pet-platform/pet-platform-server.git
git remote -v 명령을 통해 추가된 원격 저장소 확인

5. 추가한 원격 주소지 불러오기
> git fetch [원격 주소지 이름]
ex) git fetch real


5. PR 생성하기
pull request 생성
위에서 등록한 원본 원격 주소지 선택
View Pull Requests 클릭
내용 작성 및 PR 생성
6. PR 확인
원본 원격 주소지나 IDE에서 확인 가능하다.
7. 리뷰
추후 위 내용에 대해 팀원으로 부터 PR이 올라왔을 때 추가 예정이다.
8. 마무리
브랜치 기준으로 PR이 생성되며
PR 리뷰 -> commit & push -> 리뷰 -> commit & push ... 가 반복되어
최종적으로 해당 브랜치에 작업한 사항이 적용해도 되겠다 판단되면 원본 원격 소스로 병합된다.
현재 프로젝트에서는 PR issue와 관련된 사항이 변경될때 마다 discord를 통해 알림을 받도록 설정해 두었다.
댓글