Fork를 이용한 협업 과정에 익숙하지 않아 이번 직접 실습을 해보며 정리를 해 보았습니다.
원본 레포지토리를 Fork하고 PR을 생성하기까지의 과정
원본 저장소를 Fork해 온다.
협업하려는 조직(Organization) 혹은 개인의 레포지토리를 개인 저장소로 Fork 한다.
Fork한 저장소를 로컬에 클론하여 작업 진행
개인 저장소에 생성된 Fork 해온 레포지토리를 git clone 명령어를 통해 로컬에 클론을 생성한다.
Upstream 설정
아래의 명령어를 통해 로컬 저장소에서 원본 저장소를 업스트림으로 설정한다.
git remote add upstream [원본 저장소 URL]
위 과정을 완료 하고 git remote -v 명령어를 통해 현재 로컬 저장소에 등록된 원격 저장소의 목록을 확인해 보면, 원본 저장소가 업스트림으로 설정되어 있음을 알 수 있다.
브랜치를 생성하고 작업을 진행, 변경 사항을 커밋
이제 로컬에서 새로운 브랜치를 생성하고 작업을 진행한다.
변경 사항이 생기면 팀의 컨벤션에 알맞게 커밋을 한다.
변경 사항을 포크한 저장소로 푸시
로컬에서 작업한 내용을 포크해온 나의 저장소로 푸시 한다.
git push origin [브랜치 이름]
PR 생성
나의 저장소로 이동해 PR을 작성한다. (이 과정에서 자동으로 원본 Repository를 대상으로 작성하도록 안내된다)
원본 레포지토리에 나의 변경 사항 병합
생성한 PR에 대해 리뷰를 받고 머지를 하게 되면 원본 Repository에 나의 작업물이 병합된다.
원본 레포지토리에 변경사항이 생겼을때는?
로컬 저장소로 최신 변경사항 가져오기
이 과정에 앞서 반드시 원본 저장소를 Upstream으로 설정 해야 한다.
main develop 두 브랜치를 통해 주로 협업을 하고 있다면 , develop에 팀원들의 변경 사항이 모이고, 주기적으로 main 으로 머지를 하고 있을 것이다.
따라서, 내가 로컬에서 작업을 할 때는 최소한 develop 브랜치는 항상 원본 저장소의 develop 과 싱크가 맞춰져 있어야 한다.
- 로컬의 develop 으로 체크아웃
git checkout develop
- Upstream에서 최산 변경 사항 가져옴
git fetch upstream
위 과정을 통해 Upstream 저장소의 최신 변경사항을 가져올 수 있다.
로컬의 develop 브랜치에 Upstream의 변경 사항을 병합(merge)
이제 Upstream의 변경 사항을 나의 delveop 브랜치에 병합 해준다.
git merge upstream/develop
이제 Upstream의 develop 브랜치 변경사항이 내 로컬의 develop 에 병합 되었다.
변경 사항을 Origin에 푸시
이제 마지막으로 로컬의 변경 사항을 포크해온 나의 깃허브 저장소에 푸시하여, 최종적으로 원본 저장소, 나의 깃허브 저장소, 로컬이 모두 동기화된다.
git push origin develop