본문 바로가기
Git & GitHub

[Git & GitHub] 깃허브로 협업하기 - fork / pull requests

by junvely 2023. 4. 3.

깃헙으로 협업하기 위한 전체적인 과정들을 간략하게 정리해 보려고 한다.

다음 과정은 외부 원격 저장소에서 for하여 내 원격저장소로 가져와서 pull requests를 요청하는 방식으로 진행된다.

현업에서 가장 많이 사용하는 방법이라고 한다.


깃헙 기본 개념

- remote : 원격 저장소

- local : 로컬 저장소

- push : 파일을 업로드 하는 것이 아니라 버전을 업로드 하는 것이 push다.

소유하지 않은 원격저장소는 기본적으로 push가 불가능하다. => 콜라보레이터에서 add people하면 가능은 하지만, 이렇게 되면 무분별한 push로 저장소가 어지럽혀지기 때문에 권장하지 않는다.

*푸쉬권한 최소화 => 푸시 권한은 팀장 등 책임자만 부여 하는 것이 좋다.
*push권한을 아무한테나 줬는지 확인하여 깃헙을 잘 활용하는가를 알 수 있다.

- pull request : 자신이 소유하지 않은 원격저장소에 풀 할 수 있도록 요청을 보내는 방식(허락 요청)

- conflict : branch를 병합하며 같은 부분을 수정할 경우 발생하는 충돌

 

 

Pull requests 단계


1. 내가 소유하지 않은 원격저장소를 본인 계정으로 fork하기
내가 소유하지 않은 원격저장소는 기본적으로 푸쉬 권한이 없다.
fork => 다른 사람의 원격저장소를 복제해 오기 => 푸쉬권한 생김
fork 클릭 => create fork => 복제본이 내 깃헙에 생김

2. 포크한 저장소를 내 로컬에 Clone하기
푸쉬 권한이 있는 포크해온 저장소를 내 로컬에서 클론하기

3. 브랜치 생성 후 브랜치에서 작업 후(checkout) commit
커밋메세지 자세하면 자세할수록 좋음
제목, 본문, 참고 레퍼 등 소홀히 하지 말기 소통과 면접에 중요

4. push => 작업한 브랜치를 푸쉬
깃허브에 버튼 생김 compare and pull request 클릭하면 pull request남기기
어떤 작업했는지 반드시 확인하고 실수가 있는지 확인 후 올리기(혼나기전에..^^)

5. 원본 원격 저장소에 Pull requests 보내기 => 해당 브랜치에서 => 원본 저장소 main으로 

팀장이 확인 후 pull

 

 

권한자가 Pull requests를 수락하는 방법

merge(병합)와 reject(거부) 중 선택한다. 거부는 close pull request 클릭
merge pull request 버튼 클릭 => merge됨 => 원본 외에 pull 권한이 없음에도 불구하고 pull 가능
파일 변경사항 확인 후 논의가 필요하다면 댓글, 풀 리퀘스트는 코드 리뷰 등 코드논의의 장이 되기도 함 

merge 과정에서 conflict 발생 하는 경우

같은 내용을 다르게 수정할 경우 충돌(conflict) 발생 

=> 해결방법 : 1.비교하여 선별 => 2.다시 커밋하기 (당황x)

1. 비교하여 선별 => resolve 클릭

 다음과 같은 구획 

<<<<<<<<<<
기존 코드 내용
==========
변경 코드 내용
>>>>>>>>>>


위 아래로  비교 코드가 나옴 => 선택 또는 내가 남기고 싶은 부분만 직접 수정 후 다시 committing merge => 커밋 충돌 후 충돌 해결 내용 남기기

 

 

fork한 원격 저장소의 fork이후 커밋내용을 반영하는 방법


sync fork클릭 => update => 내 원격 저장소에서 해당 브랜치에 pull => fork 이후 쌓인 커밋들을 가져올 수 있음
풀 과정에서 sync fork도 충돌이 발생할 수 있음 => 똑같이 선별하여 커밋하면 된다.