초보 개발자

Git PR(pull request) 본문

AI 웹개발 트랙 - 내배캠/5주차

Git PR(pull request)

taehyeki 2022. 1. 10. 23:41

merge를 할 때 경우에 따라 작업한 내용을 리뷰하고 최종적으로 프로젝트에 반영한다.

이걸 PR후 merge라고 한다.

 

PR(Pull Request)느 내 작업내역을 바로 merge하지 않고 참여하고 있는 프로젝트 내 작업(branch)을 merge해달라고 요청(Request)을 먼저 보내는 것이다.

 

작업한 내용에 대해 코드리뷰를 하거나 토론하면서 개선시킬 수 있는 기회가 생기는 것이다. 프로젝트 기준에 맞지 않는다면 PR은 거부될 수도 있다.

이렇게 리뷰한 후 작업내역을 최종 반영하면 프로젝트 퀄리티가 더 높아질 것이다.

또 기본적으로 프로젝트 품질을 관리해야 하는 회사에서 작업하거나, 여러 사람들이 참여하는 오픈소스에서는 PR후 merge하는 과정을 거치게 된다.

 

먼저 같은 repo안에서 기본 브랜치에 PR하는 실습을 해보려고한다. branch를 바로 merge하지 않고 PR한 후에 검토받고 merge하는 것이다.

전에 feature/jjim 이라는 브랜치를 만들어 원격 저장소에 push하였다. 이 브랜치를 메인브랜치에 PR을 보내보려고 한다.

base가 기준이 되는 브랜치 main이다.

아래와같이 풀 리퀘스트를 요청해보자

그럼 풀리퀘스트가 하나생성된 것을 확인할 수가 있다.

같은 아이디지만 이렇게 댓글로 추가 의견을 보낼 수도있다.

육수내는방법을 추가해보라고 하여 파일 수정후 커밋 그리고

 

origin/feature/jjim에 푸시까지 해주었따. 그럼 자동으로 pull request한 곳에 

 

커밋 내역까지 자동으로 올라간 것을 확인할 수가 있다. 충돌이 나는 것도 없다고 하니 merge를 해주자

merge버튼을 누르면 아래와 같이 잘 merge가 되어 close상태로 변한다.

그리고 작업이 끝났으니 branch를 삭제해주자

그럼 이제 main 브랜치에도 jjim이 잘 올라와있는 것을 확인할 수가 있다.

그리고 소스트리에 가서 원격repo의 작업내용을 로컬repo에도 업데이트 시켜주어야 한다.

( feature/jjim branch  원격 main에 merge됨)

 

패치를 누르면 임시로 원격repo의 상황을 알려준다,

그럼 이렇게 변하게 되고 이제 pull을하면 원격상황이 로컬에 반영이 된다.

pull은 main에 해야하니 main으로 체크아웃을 한 뒤에 진행해주어야한다.

 

그럼 아래와 같이 commit이 한번 더 된 상황인데 우리가 fast-forward가 가능해도 새 커밋으로 생성 옵션을 주었기 때문이다. 따라서 다시한번 push를 해주어 커밋상태를 맞추어 주자.

push

그리고 로컬의 feature/jjim branch도 삭제하여 주자

 

현재의 상황은 아래와 같다. 로컬은 가만히 있고 원격에서 merge한 뒤 그 내용을 pull해와서 로컬을 업데이트 시킴

근데 왜 PR이 완료된 후에야 로컬 repo의 feature/jjim branch를 삭제해야할까??

만약 추가 수정을 제안받았을 때 로컬 repo의 feature/jjim 에서 commit후 원격 repo의 feature/jjim으로 push하는 것이 일반적이다. (육수내는법 추가)

수정은 로컬 repo 브랜치에서 하고 push하는 것을 기본으로 생각해야 한다.

PR이 완료되기 전까진 PR요청을 한 로컬 브랜치(feature/jjim)을 삭제하지 말아야한다.

PR이 반영되기 전 추가 commit을 해야한다면, 로컬 branch에서 commit후 원격 branch에 push해서 변경된 내용을 반영한다

'AI 웹개발 트랙 - 내배캠 > 5주차' 카테고리의 다른 글

Git commit 되돌리기 amend, revert, reset  (0) 2022.01.11
Git fork  (0) 2022.01.11
Git 원격 repo와 branch  (0) 2022.01.10
Git merge conflict  (0) 2022.01.10
Git merge  (0) 2022.01.10