Git : Pull Request (PR)

    1. Pull Request

    • Github는 여러 사람들이 저장소를 병합할 수 있도록 하는 PR 기능을 제공한다. 

     

    2. fork

    2.1 fork란?

    • fork는 협업을 위해 상대방의 코드를 가지고 오는 공유 방법 중의 하나다. 

    2.2 접근 권한

    • 자신이 소유자이거나 구성원인 경우에는 접근 권한이 있음. 만약 접근 권한이 없으면 접근 권한을 요청해야함. 

    2.3 fork 해오기

    • 우측 상단에 위 화면이 존재한다. 여기서 Fork를 클릭하면 저장소를 내 원격 리포지토리로 복사할 수 있다.

    2.4 fork 확인

    • fork 한 저장소는 우측 상단의 fork 기능이 비활성화 된다. 
    • 좌측 상단에는 어떤 리포지토리에서 fork 되었는지 확인할 수 있다. 

     

    3. 복제

    $ git clone <복제 url>
    • 포크는 본인 계정에 원격으로 복제한다. 포크된 저장소를 내 로컬로 다운 받아서 코드를 수정하면 된다. 
    • 위 명령어를 이용해서 복제 받을 수 있다.

     

    4. 코드 수정

     

     

    5. Pull Request

    포크된 저장소로 이동한 후, PR을 생성하면 된다. 

    5.1 PR 생성

    생성하면 다음과 같은 문구가 나온다.

    1. 어떤 저장소의 어떤 브랜치가 어떤 저장소의 어떤 브랜치로 들어갈지를 정할 수 있다.
    2. 이 때 그 브랜치에서 어떤 커밋이 존재하는지를 볼 수 있다. 
    3. 그리고 DIFF 에는 merge 하는 녀석들을 기준으로 어떤 차이가 있는지를 확인할 수 있다. 

     

    5.2 PR 메세지 생성

    • create pull request 버튼을 누르면, PR 메세지를 작성할 수 있다. 
    • 이 때 제목 / 내용을 작성해야한다. 

    • 다음과 같이 PR을 생성할 수 있다. 
    • create pull request를 이용해서 PR을 생성한다. 


    5.3 PR 확인

    • 원본 리포지토리로 이동해보면 Pull Requests에 새로운 (1)이 떠있는 것을 볼 수 있다.

     

    6. 테스트 및 검증

    • PR을 merge하기 전에 테스트가 필요하다. 따라서 필요한 경우, 원본 리포지토리에 PR 요청이 온 리포지토리를 Fetch로 가져와서, Test 브랜치를 새로 생성해서 테스트 해볼 수 있다. 
    # 원본 리포지토리 추가
    $ git clone <원본 주소> test
    
    # fork 리포지토리 추가
    $ git remote add fork <fork 주소>
    $ git fetch fork
    
    # 테스트 브랜치 생성
    $ git checkout -b req1
    # git merge fork/master
    
    # 코드 테스트
    • 위 명령어를 이용해서 만들어진 테스트로 만들어진 브랜치를 내 브랜치에 병합해서 테스트 브랜치를 만든다.

    • 두 가지를 확인했다.
      1. merge가 정상적으로 되는 것을 확인했음
      2. 반영한 Commit이 정상적으로 나오는 것을 볼 수 있음. (Second PR)

    • 정상적으로 반영이 되었기 때문에 test 브랜치를 삭제하고, PR을 허락해준다. 
    • 브랜치를 삭제하는 이유는 사용하지 않을 브랜치이기 때문이다. 
    • 따라서 Merge Pull Request를 클릭해서 PR을 Merge 해준다.

    • PR을 허락하면, "Second PR" 이라는 변경점이 반영된 것을 볼 수 있다. 

    • 반영한 결과를 확인해보면, 현재 로컬의 브랜치는 git Repository에 있는 브랜치 대비 2번이나 뒤쳐진 것을 볼 수 있다. 

     

     

     

    https://git.jiny.dev/pullrequest/receive/#1

    '기타 Tool > Git' 카테고리의 다른 글

    Git 복귀  (1) 2022.08.29
    Git 병합 / 충돌  (0) 2022.08.29
    Git Branch  (1) 2022.08.27
    Git Remote Repository  (0) 2022.08.27
    Git의 Commit  (0) 2022.08.26

    댓글

    Designed by JB FACTORY