
프로젝트의 중심에 Repository(코드 저장소)가 있고, 그 코드 저장소를 복사한 후, 각자 작업이 끝나면 중심에 있는 Repository에 변경 사항을 pull 한다.
특정 branch에 내가 수정한 코드를 push하고 나면 프로젝트 관리자에게 이를 알리고, 내가 수정한 코드를 검토 후 병합해달라고 요청하는 것을 말한다.
코드 충돌을 최소화 할 수 있고 push 권한이 없는 프로젝트나 오픈 소스 프로젝트에 기여할 때 많이 사용한다.
Fork
Upstream Repository(원본 리포지토리)를 자신의 저장소(개인 저장소)로 fork
Clone
Fork 해온 리포지토리를 로컬 저장소로 Clone
Branch 생성
clone한 프로젝트의 코드를 수정하거나 추가할 때 브랜치를 생성해서 작업할 수 있다.
수정 작업 후 origin으로 merge
작업 완료 후 commit, push를 통해 해당 코드를 원격 저장소로 푸시한다.
push
github으로 push
Pull Request 생성
원본 리포지토리에서 New pull Request를 통해 pull request 생성
Merge Pull Request
해당 리포지토리 관리자는 코드의 변경 사항을 확인 후, Merge 여부를 결정한다.
Merge 이후 동기화 및 Fork 및 Branch 삭제
Merge가 완료되면 로컬에 작성한 코드와 원본의 코드를 병합하고 최신의 상태를 유지하기 위해 동기화 한다.
타켓 프로젝트 저장소를 자신의 저장소로 Fork 한다.

내 저장소 중 어디로 가져올 것인지 선택한다.

Fork가 완료되면 자신의 계정에 새로운 저장소가 생긴다.

Github Desktop에서 File > Clone repository 해서 내 계정에 fork된 저장소를 로컬로 가져온다.

자신의 로컬 컴퓨터에서 코드를 추가하는 작업은 따로 branch를 만들어서 진행한다.
자신이 사용하는 코드 편집 툴을 활용해서 각자 수정 작업을 진행한다.
개발을 하다보면 원래 코드와 많이 달라지게 되는데, branch를 만들면 원래 코드에 영향을 주지 않으면서 독립적으로 개발 할 수 있다.
⭐ Branch에서 작업 후에는 꼭 Commit을 해줘야한다.
origin(main branch)를 current branch로 띄워두고, merge하려는 branch를 클린한다.

main에서도 코드가 수정되었음을 알 수 있다.
origin으로 merge된 코드를 Github에 push 해준다.
push 완료 후 자신의 계정에서 pull request가 활성화된 것을 확인할 수 있다.

Split을 누르면 수정 전과 후의 코드를 비교할 수 있다.


PR을 받은 원본 저장소 관리자는 코드 변경 내역을 확인하고 merge 여부를 결정한다.
merge가 완료되면 로컬 코드와 원본 저장소의 코드를 동기화한다.
git pull origin master
이후에 작업하던 로컬의 branch를 삭제한다.