💡수업 목표💡
- 협업을 위한 작업 관리 스킬을 익힙니다- PR과 commit 되돌리기, 임시 저장
- 협업하기 좋은 사람이 되기 위해 기본 협업 매너를 익힙니다.
- Github 으로 다른 사람과 소통합니다 - 내 포트폴리오, 오픈소스
Git의 PR(Pull Request)
: 기존 깃허브 저장소에 보관된 코드에서 내 작업으로 인해 생긴 변경사항들, 코드 라인들의 추가와 삭제를 바로 merge하지 않고 업데이트 해달라고 보내는 요청.
PR(Pull Request, 풀리퀘스트)를 통해서 아무렇게나 작성된 혹은 제대로 동작하지 않는 코드가 포함되거나 기존 코드의 무분별한 삭제 등을 막기 위해 회사에서는 **코드 리뷰(review)**를 거쳐 이 코드가 베이스 브랜치에 포함되어도 될지 **승인(approve)**하거나 **변경 요청(change request)**를 통해 결정되도록 하는 검증 절차를 할 수 있도록 한다.
Git PR 날려보기
내 로컬 컴퓨터에서 명령을 내려서 PR 을 하는 방법도 있지만, Github 페이지에서 PR 하는 것이 훨씬 직관적이므로 통상적으로, Github repo 페이지에서 PR 한다.
PR을 요청할 branch로 이동해준 다음 Pull request를 해준다.
아래와 같은 PR 페이지로 이동합니다.
- base : merge를 할 브랜치. 따로 선택하지 않았다면 보통 repo의 기본 브랜치인 master 혹은 main.
- compare : base 에 합치고 싶은 브랜치.
- Create pull request : PR 생성하기
- 브랜치의 commit 내역 : 변경이력이 맞는지 확인할 수 있는 compare 브랜치의 commit 내역
Pull Request가 생성되면, 원본관리자는 변경내역을 확인하고 코드 리뷰 후에 Merge 여부를 결정한다.
아래 메세지가 나오면 PR이 반영된걸 확인 할 수 있다. 확인이 되면 브런치를 삭제하면 된다.
단, PR이 반영될때까지는 확실하게 반영된게 아니므로 혹시 모를 일을 염두해두고 로컬저장소의 브런치를 삭제하지 말기를 바란다.
PR이후 원격저장소에서 로컬저장소로 가져오기 - fetch
PR 이후 원격저장소에 변경사항이 발생했다면, 그 내용을 가져와서 로컬 저장소에 최신 상태로 유지해줘야한다.
이때 fetch와 pull을 사용한다.
- fetch : 변경이력을 가져오기. 원격 저장소에 변경사항이 있는지 확인하여 commit내역만 가져오고, 변경된 데이터를 로컬 Git에 실제로 가져오지는 않는다.
- pull : fetch + merge. 변경내역을 확인할 뿐만아니라 최신 변경데이터까지 가져와서 기존 로컬 데이터와 병합을 한다. ( conflict가 발생될 수 있다.)
$ git fetch [저장소 주소 이름]
다른 사람의 repo에 PR제안하기 - fork
오픈 소스처럼 사용권한이 다른 사람인 저장소에 직접적으로 변경하는 것은 불가능하다. 이럴 때에는 내가 어떤 부분을 수정하거나 기능을 추가했는지 프로젝트를 제안해야한다.
- fork : 원본 repo를 내 repo로 그대로 복제해서 개발할 수 있게 한다. fork한 저장소는 원본 repo와 연결되어 있어서 원본 repo의 변화가 생기면 이는 그대로 forked repo에 반영할수 있다. 원본 repo와 연결되어 있어서 변경사항을 제안하는게 가능하다.
- clone : 특정 repo를 내 로컬 repo로 복사하는 것. 단순 사본의 개념
이후 일반 PR 날리는 것은 기존과 거의 동일하다.
제안할 코드은 브런치를 생성해서 작업하고 commit 후 GitHub 원격 forked repo에 업로드 후 PR을 한다.
PR내용을 작성할 때 base를 보면 내 repo가 아니라 원본 repo에 PR을 제안하는 것을 확인할수 있다.
모든 commit, PR남길 때에은 issue id를 반드시 챙기도록 하자. 그렇게 하면 issue에서 쉽게 확인할 수가 있다.
'스파르타코딩클럽 > Git' 카테고리의 다른 글
협업을 위한 GIT 개발일지 - 3주차 (3) Git 협업 가이드 (0) | 2022.09.16 |
---|---|
협업을 위한 GIT 개발일지 - 3주차 (2) Git Commit 심화 (0) | 2022.09.16 |
협업을 위한 GIT 개발일지 - 2주차 (2) Git Branch, Merge, conflict (0) | 2022.09.15 |
협업을 위한 GIT 개발일지 - 2주차 (1) GitHub issue 사용하기 (0) | 2022.09.15 |
협업을 위한 GIT 개발일지 - 1주차 (2) GitHub 시작하기 (0) | 2022.09.15 |