풀 리퀘스트(Pull Request), PR이라고 불리는 이것은 깃허브의 핵심입니다. 푸쉬 권한이 없는 저장소에 작성한 코드를 제안하고 리뷰를 거친 후 프로젝트에 병합(Merge)할 수 있도록 요청하는 것입니다. 오픈 소스 프로젝트에 기여하거나, 협업할 때 풀 리퀘스트를 자주 사용하게 됩니다. 지금부터 풀 리퀘스트를 하는 방법에 대해 자세히 알아보도록 하겠습니다.
Pull Request (PR)
Pull Request를 하기 위해서는 다음의 단계를 거칩니다.
- PR을 보내고자 하는 저장소 Fork
- Branch 생성 및 코드 작업
- Pull Request 생성
- 코드 리뷰 및 Merge PR
- Merge 확인 후, 코드 동기화 및 브랜치 삭제
1. Fork
Fork란 다른 저장소의 내용을 자신의 계정으로 복제하는 것을 말합니다. Fork 버튼을 누르면 자신의 계정에 PR을 보내고자 하는 저장소가 복제되어 생성됩니다. 그 이후 Fork 저장소를 자신의 로컬로 clone을 진행합니다.
2. Branch 생성 및 코드 작업
자신의 로컬 컴퓨터에서 branch를 생성하여 코드 작업을 수행합니다.
# 새로운브랜치 생성
git branch 새로운브랜치
# 새로운브랜치로 브랜치 변경
git switch 새로운브랜치
코드 작업을 수행하고 나면 add, commit, push 작업을 차례로 수행하여 "자신의 저장소"에 수정사항을 반영합니다. 이때 자신이 새로 생성한 브랜치를 commit하고 push해야 합니다.
# 코드 작업한 것들을 모두 스테이징한다.
git add .
# 커밋을 작성한다.
git commit -m "커밋 메세지"
# 새로운브랜치를 origin으로 푸쉬한다.
git push origin 새로운브랜치
3. Pull Request 생성
push를 다한 후, 자신의 github Repository에 접속하면 "Compare & pull request" 버튼이 활성화 됩니다. 버튼을 누른 후 write 부분에 간단한 메시지를 작성한 후 Pull Request를 생성합니다.
4. 코드 리뷰 및 Merge PR
원본 저장소의 관리자는 새로 들어온 Pull Request를 보고 코드 변경 내역들을 확인합니다. 그리고 관리자는 Merge 여부를 결정합니다.
5. Merge 확인 후, 코드 동기화 및 브랜치 삭제
원본 저장소에 내가 보낸 PR이 병합(Merge)되었다면, 자신의 로컬 컴퓨터 환경과 원격 저장소 환경을 동기화합니다. 그리고 더이상 필요없는 브랜치는 삭제합니다.
# 원격 저장소와 로컬 저장소 동기화
git pull
# 다 쓴 브랜치 삭제
git branch -d 새로운브랜치