본문 바로가기
Git

Github에서 Fork 한 저장소를 원본 저장소와 동기화 하는 방법

by jayden-lee 2020. 1. 20.
728x90

Github에서 특정 프로젝트를 Fork 하면, 원본 저장소를 자신의 저장소로 복사합니다. 이제 옮겨진 저장소에 기능을 추가하거나 내용을 수정하고 커밋을 하더라도 원본 저장소와 분리되어 있으므로 영향을 끼치지 않습니다.

 

어느 정도 시간을 흐르고 난 뒤, 다시 원본 저장소를 살펴보면 자신이 Fork 한 시점보다 커밋이 많이 되어 있는 것을 볼 수 있습니다. 물론 원본 저장소에서는 변경된 사항이 반영되어 있지만, Fork한 저장소는 해당 사항이 반영되어 있지 않습니다. 그래서 원본 저장소와 동기화 할 필요가 있습니다. 나중에 PR(Pull Request)를 할 때, Conflict를 줄일 수 있는 것뿐만 아니라 최신 변경된 사항을 바로 알 수 있기 때문입니다.

 

그래서 이번 글에서는 Fork 한 저장소를 원본 저장소와 동기화 하는 방법을 알아보고자 합니다.

Github 원본 저장소의 주소 추가

Fork 한 저장소를 로컬 어딘가에 clone 해왔을 것 입니다. 해당 위치로 가서 git remote -v 명령어를 실행하면, 현재 저장소의 원격 주소가 어떻게 설정 되어 있는지 확인할 수 있습니다.'

 

git remote -v

git 저장소 원격 주소 설정 확인

 

원본 저장소 위치는 설정되어 있지 않고, Fork 한 저장소 주소만 설정되어 있습니다. 이제 원본 저장소 위치를 추가하겠습니다. Github에서 원본 저장소에 가면, https 또는 ssh 방법을 선택하고 원본 저장소의 주소를 얻을 수 있습니다.

 

원본 저장소 주소 얻는 방법

 

원본 저장소 위치를 추가하고, 다시 git remote -v 명령어를 실행합니다.

 

git 원본 저장소 주소 추가하기

Fork 한 저장소 원본 저장소와 동기화 하기

1. 원본 저장소 내용을 fetch 합니다. 이 때, git fetch upstream 명령어를 실행합니다.

 

git fetch upstream

원격 저장소 내용 가져오기

2. Fork 한 저장소의 master 브랜치로 체크아웃합니다. 이때, git checkout master 명령어를 실행합니다.

 

git checkout master

git master 브랜치로 checkout

3. 로컬 master 브랜치와 원본 저장소 master 브랜치 병합(merge)합니다.

 

git merge upstream/master

로컬 master 브랜치와 원본 저장소 master 브랜치 병합 (merge)

4. 로컬 master 브랜치를 push하면, 자신의 Github 저장소 내용이 원본 저장소와 최신 동기화된 상태가 됩니다. 이 때, git push origin 명령어를 사용합니다.

 

git push origin

git push origin 하기

댓글