Pull request

lany159·2024년 3월 4일
0

Git

목록 보기
6/7
post-thumbnail

1. pull request 이해

  • pull request 이해와 사용하는 이유

해당 작업을 끝냈을 때, 본인이 만든 branch를 다른 branch에 병합하는 과정에서 다른 사람들의 code review를 받고 싶을 때 사용하는 기능이다. 협업 할 때엔 code review의 이유로 git merge는 실제 쓰지 않는다.

pull : 당겨서 합치는 것 (merge)
request : 다른 사람들에게 요청하고 점검 후 합치는 것


  • 예시를 통한 pull request의 이해

본인이 만든 B branch가 원격 저장소에도 동기화가 되어 있고 작업이 완료 되었다. 실험적으로 만든 B branch의 기능을 master(or main) branch에 병합하기 전, 본인의 팀원들의 검토를 받는다.

pull request를 누르면 이것을 검토해 달라는 의미를 표명한 것이기 때문에 본인이 작업한 버전에 대해서 팀원들의 토론이 시작되고, 토론을 거쳐서 문제 없을 경우 master branch로 병합하여 다른 팀원들에게 배포 된다.

pull request의 핵심적인 기능은 본인이 작업한 코드를 다른 멤버들이 검토해서 코드의 품질을 높이고, master branch(통합 브렌치)의 안정성을 높인다.


  • 2가지 경우의 pull request 방식
  1. 원격 저장소에 접근할 수 있는 직접적인 권한이 있는 경우
    : 본인이 작업한 branch를 다른 branch에 병합하는 과정에서 다른 사람들의 토론을 받고 싶을 때 사용하는 pull request 방식.

  1. 원격 저장소에 대한 접근 권한이 없는 경우
    : 오픈 소스 방식에서 주로 사용되는 pull request 방식. 읽기는 가능하지만 쓰기는 불가능한 오픈 소스를 원격 저장소에서 복제(fork)하여 권한을 부여해, 원본 파일에 본인이 작업한 기능을 넣고 싶어 원본 파일 소유자의 토론을 받고 싶을 때 사용하는 pull request 방식.

Feature branch
: master branch는 언제 배포가 되어도 문제가 없는 상태를 유지하여야 하기 때문에 master branch에 직접 작업하는 것을 지양한다. 새로운 기능을 만들기 시작했거나 실험 작업을 할 때에는 branch를 생성해 미리 그 작업을 진행한다.


2. pull request 실습

저장소 생성 > 팀원 배치 및 권한 부여 > 프로젝트 작성(branch 생성 > add & commit) 및 업로드(push).

  • <>code > Compare & pull request
  • Pull request > New pull request

B를 A로 병합하는 것을 요청하는 양식이 나타난다. 내용을 작성하고 Create pull request 누르면 pull request가 생성된다.

  • compare:B는 합칠 기능 branch
  • base:A는 합쳐질 최종 branch

  • Reviewers : 코드에 대한 의견을 주었으면 하는 사람 등록
  • Assignees : 작업에 참여하는 사람 등록
  • Create pull request : 작업이 끝나 검토, 병합 요청
  • Create pull request > Create draft pull request
    : 작업이 끝나지 않았지만 코드 리뷰를 요청 (병합X)

Reviewers, Assignees로 등록 된 사람들에게 pull request가 들어왔다는 사실이 통보된다.

  • Conversation : pull request와 관련한 사건을 시간 순으로 보여줌
  • Commits : branch에서 생성했던 commit을 보여줌
  • Files Changed : 작업을 통해서 branch에서 변경 된 내용의 파일을 보여줌

검토 후 최종적으로 문제가 없다고 한다면, 본인이 만든 branch가 master branch로 병합된다. Marge pull request > Confirm merge.


3. pull request 소통

저장소의 권한이 있는 다른 팀원의 pull request 요청 받은 화면이다.

해당 글을 클릭하여 files changed를 확인해 의견을 달고 싶은 부분을 드레그 하여 선택한다.

커서를 놓으면 의견을 달 수 있는 창이 뜨고, 내용을 입력하면 된다.

  • Add single comment : 의견 등록
  • Start a review : 의견들을 한 번에 묶어서 등록
  • 📥(Insert a suggestion) : 추천 코드 작성

📥(Insert a suggestion) 작성 시 생성되는 숫자는 코드 번호이고, 추천할 코드를 작성한다. Add review comment > Finish your review.

  • Comment : 의견
  • Approve : 병합에 대한 동의
  • Request changes : 의견 강조

작성한 리뷰는 실시간으로 반영 된다. 해당 리뷰에 댓글도 달 수 있고, 바로 commit도 가능하다.

함께 공부한 영상
https://opentutorials.org/course/1


4. 협업 가이드

실제 협업에서 작업 완료 후 단순히 pull request > GitHub에서 merge의 방식을 거치면 문제점이 발생한다.

  1. Main branch는 배포용이기 때문이다.
  • 배포용이기 때문에 완벽하게 기능을 개발해야 merge가 가능
  • 기능을 개발할 때마다 main에 합치게 되면 그 기능만을 가진채로 배포
  • 기능에 대해 버그가 생겼을 때 찾기가 어려워 해결하는 데 상당한 시간 소요
  • 해결책 : 테스트 할 개발용 branch를 생성

  1. 그냥 합치면 위험하다.
  • 각 기능에 대해선 문제가 없었으나 합쳤을 때 문제가 발생할 경우
  • 해결책 : 합치기 전 내 로컬에서 충돌 해결 및 테스트 진행

dev branch를 만들어 활용할 때, GitHub에서 dev branch를 default로 설정하면 pull request에서 base를 default로 설정한 dev branch 바꿀 수 있다.

협업 가이드 정상 구동


햡업 가이드
충돌 발생


협업 가이드_ 배포
업로드중..


5. Readme.text 만들기

Readme 파일은 해당 디렉토리의 설명문이 필요할 때 사용한다. GitHub에서 New repository 생성할 때, Add a README fils 체크란을 선택 후 생성하면 된다.

✏️로 내용 수정이 가능하고, 작성법은 markdown 문법으로 velog 사용자들에게 불편함 없이 사용할 수 있다.

Readme에 들어가는 정보

  • 서비스에 대한 설명
  • 사용 방법
  • 사용한 기술 스택
  • 협업한 사람
    ...
profile
공부일지

0개의 댓글