본문 바로가기
etc

fork repository 최신화 상태 유지하기

by upswp 2021. 3. 6.

서론

github에서 fork하여 사용하는 이유는 다양하다. 

  • 단순히 해당 소스를 본인의 repository로 가져와서 가공 또는 활용해보고싶은 열정!
  • 개인 프로젝트를 진행하며 master repository에서 fork를 하여 프로젝트를 기여하는 방법
  • 오픈소스에 참여하여 해당 오픈소스를 활용 및 가공하여 오픈소스 기여를 하기 위한 방법

이처럼 다양한 방법으로 fork를 하여 본인의 repository로 가져온다.

이 글은 가져온 fork repository를 일회성 Pull Request를 진행하는 일이 아닌 지속적으로 Pull Request를 진행할 경우를 고려하여 작성하였다.


본론

상황을 가정해보자.

하나의 프로젝트를 fork하여 꾸준히 그 프로젝트를 참여한다면 한가지의 문제를 만나게 된다.

한번의 Pull Request를 진행하면 fork해온 repository가 최신화 될 필요가 없다.

하지만 지속적으로 참여를 진행한다면 fork해온 repository가 최신화 상태가 되지 않아 더이상 참여가 어렵다. 그렇기때문에 main repository에서 최신화 상태를 지속적으로 나의 repository에 받아와야 한다.

 


upstream

들어가기전에

  1. fork 받아오고자 하는 repository에서 fork를 받아온다.
  2. fork 해온 repository로 이동하여 clone하기 위해 해당 repositoty의 주소를 복사한다.
  3. 이후 본인이 저장하고자 하는 local 폴더 위치로 이동하여 clone 작업을 진행한다.

 

git remote -v

위와같이 git remote -v 을 진행하면 현재 fork 해온 repository가 확인이 된다. 

 

git remote add upstream 경로

기존의 원본 repository를 위와같이 git 명령어를 내려준다.

이후 제대로 추가가 되었는지 확인하기 위해 다시한번 git remote -v을 체크해준다.

 

만약 경로가 잘못 설정이 되었다면

git remote remove upstream

위와같은 명령어를 주어 기존의 명령어를 삭제할 수 있다.

 

git fetch upstream

이제 동기화 작업을 하기 위해 위의 명령어를 기입해준다.

git merge upstream/master

동기화해온 파일들을 fork 해온 repository에 merge하는 작업을 진행해준다.

 


결론

작업을 들어가기전 기존의 repository에서 fork해온 repository로 반드시 작업이 같이 되어야 한다. 그렇지 않게되면 git 내부에서 충돌이 일어나면서 복잡하게 문제를 풀어나가야 한다.

 

지금까지 upstream을 이용해서 동기화하는 작업을 알아보았다.