본문 바로가기

Github

06_02_깃허브로 협업하기: Pull Request

반응형

Pull Request

원격 저장소가 내 변경사항을 풀(Pull)하도록 요청(Request)을 보내는 방식

![img](https://blog.kakaocdn.net/dn/cYGY29/btrRo4q5sZF/gUIQOpUXR5cPm5QIibZoB0/img.png)

Pull Request 해보기

Pull Request 5단계

  1. 기여하려는 저장소를 본인 계정으로 **포크**하기
  2. 포크한 저장소를 **클론**하기
  3. 브랜치 생성 후 **생성한 브랜치에서 작업**하기
  4. 작업한 브랜치 **푸시**하기
  5. **풀 리퀘스트** 보내기

1. 기여하려는 저장소를 본인 계정으로 포크하기

❓포크(fork)

A *fork* is a copy of a repository. Forking a repository allows you to freely experiment with changes without affecting the original project. [View existing forks.](https://github.com/kangtegong/collaboration/network/members)

포크를 하면 이 저장소의 복사본이 나의 계정에 내 소유로 만들어진다.

![img](https://blog.kakaocdn.net/dn/6r3wx/btrRssLK2VT/aFOrXUSxVDJL3d6JR39Jf1/img.png)

![img](https://blog.kakaocdn.net/dn/b8fIlH/btrRqG4LsGV/415kjCmIIFwVyp4BU2rCPK/img.png)

이건 어디서 복제된 건지 알려준다.

![img](https://blog.kakaocdn.net/dn/FALO5/btrRqFdASgX/sfgHaRCV3WGEQlYrX17h20/img.png)

포크는 왜 할까?

왜 우리 계정으로 저장소를 복제해올까?

원본 저장소는 우리 소유가 아니므로 push 권한이 없어서 못한다. 하지만 fork하면 우리 계정에 있는 저장소이므로 push가 가능해진다.

2. 포크한 저장소를 클론하기

⚠️'포크한 저장소'를 클론해야지, '원본 저장소'를 클론하는게 아니다!

![img](https://blog.kakaocdn.net/dn/JAEbW/btrRs865gnS/cRo65HpTABCNbEEm3ZnK5K/img.png)

클론 완료!

![img](https://blog.kakaocdn.net/dn/AvWMY/btrRtzpFf3i/ncv34IGU1rHtMyRKj0g8i1/img.png)

3. 브랜치 생성 후 생성한 브랜치에서 작업하기

해당 브랜치에서 작업해야 하므로 checkout 필수!

![img](https://blog.kakaocdn.net/dn/bKAtCD/btrRtHup7US/hO2pKqf7fxXg7by0URoJp1/img.png)

이제 여기서 작업을 하면 된다.

파일을 메모장으로 열고, 맨 아래에 값을 추가한 후 저장한다.

![img](https://blog.kakaocdn.net/dn/dcBEFU/btrRrncVPCW/ZtC7CInYkmZJsj00Uhlo71/img.png)

변경된 내용을 커밋한다.

![img](https://blog.kakaocdn.net/dn/c4fm6O/btrRpXS6OQ0/Qfyoe4skyKAaY2tA6Z3YKK/img.png)

4. 작업한 브랜치 푸시하기

변경된 내용을 푸시한다. main이 아니라 add_myname 브랜치에 푸시해야 한다.

![img](https://blog.kakaocdn.net/dn/dsIsGJ/btrRt8rKMYZ/ZRnfecU8JSz29Nfpfts7uk/img.png)

5. 풀 리퀘스트 보내기

내 저장소에서 **Compare & pull request**

![img](https://blog.kakaocdn.net/dn/bwhCpU/btrRsubN0yo/SjSOqstmzxs3YF09hon9PK/img.png)

nno3onn/collaboration 저장소의 add_myname 브랜치가 -> kangtegong/collaboration 저장소의 main 브랜치로 pull 요청을 보낸다.

![img](https://blog.kakaocdn.net/dn/bQXNcg/btrRtU8cLuG/kHrQkRrvtI6ctKKTkISZkK/img.png)

아래엔 작업 내역도 볼 수 있다 (실수 있는지 확인).

![img](https://blog.kakaocdn.net/dn/AbjFa/btrRpETBm96/VlnPv3x9qsni15WYqqrkfk/img.png)

kangtegong/collaboration 저장소에 Pull requests를 보면 내가 요청한 pull request가 생성된 것을 확인할 수 있다.

![img](https://blog.kakaocdn.net/dn/MYYAn/btrRt6U1Mw8/LI2H6KcgjWgwCDUfAXbUkK/img.png)

클릭해서 File changed에 들어가면 변경된 내역을 볼 수 있다.

![img](https://blog.kakaocdn.net/dn/rz3rK/btrRt8L4JcO/gqpL2clXYN3ldjIf7Xn62k/img.png)

이제 request가 승인될 때까지 기다리면 된다.

원본 저장소 주인장은 받은 Pull Requests에 코멘트를 달거나 문제가 없으면 **Merge pull requests** 버튼을 눌러서 병합한다. 그러면 자동으로 pull request는 닫기게 되고 원본 저장소에 내가 작업한 내용이 반영된다.

(+) 승인된 후 브랜치는 삭제하기

pull request가 성공적으로 이뤄지고 이 브랜치에서 더이상 할 작업이 없다면 **Restore branch**를 눌러서 브랜치를 삭제하자.

반응형