본문 바로가기

IT/Software

[Git] Fork 한 repository 최신으로 동기화하기 with Sourcetree

이미 Fork 한지 오랜된 저장소의 경우 원본 프로젝트의 업데이트가 반영되지 않은 경우가 많다.

이 경우, 최신으로 동기화를 해 두는 것이 필수!!

반대의 경우는 Pull Request 를 날리면 되겠지만, 일단 최신 소스를 반영한 다음에 수정을 해도 해야 되지 않을까?

[Git] Fork 한 repository 최신으로 동기화하기 with Sourcetree

아래글을 참고하면 console command 로 할 수 있다. 

다만, 이 글은 console 창에서 열심히 쳐야 하므로, 여기서는 Sourcetree 툴을 이용해서 해보자.

일단 아래 프로젝트를 유사한 상황으로 만들어서 해본다.


원본 프로젝트 : https://github.com/Wiznet/W7500x_StdPeriph_Lib

포크 프로젝트 : https://github.com/bjnhur/W7500x_StdPeriph_Lib

원본 프로젝트 업데이트확인

그림에서 보는 바와 같이 Fork 한 이후에 원본 프로젝트에 3개의 commit이 더 발생했다. 따라서 Fork 한 프로젝트에도 이 변경 부분이 동기화 되어야 한다. 


먼저, Sourcetree 를 이용하여 clone 하고 원본 프로젝트를 remote 에 추가하는 작업으로 시작한다.

Add Remote...

Add 버튼을 누르고,

Add Remote button

원본 프로젝트의 주소를 입력한다. 이름은 원하는 것으로 보통 "upstream" 을 많이 쓰던데, 그냥 "root_project" 로 넣어봤다. 

원본 프로젝트 주소 입력

Remote 가 아래 그림처럼 등록되었다.

Add Remote repo


그럼 이제, 원본 프로젝트에서 최신 업데이트된 내용이 있는 지 Fetch 를 이용하여 정보를 받아오자.

Fetch from root_project

그럼, 원본 프로젝트에는 3개의 commit 이 Fork 한 이후에 발생했다는 사실을 아래 그림과 같이 알 수 있다.

최신 변경 내용 확인


그럼 이제 마지막으로 최근에 변경된 3개의 업데이트를 Fork 된 저장소에 Merge 해서 동기화를 마무리를 해보자.

아래 그림처럼, Merge 버튼을 눌러보자.

Merge

충돌이 발생했다면, Resolve 하시면 되고 별일 없다면 아래 그림처럼 Clone 한 내 로컬 저장소에 변경된 것이 Merge 가 된 것을 볼 수 있다. (3개의 commit이 적용된 것을 확인!!)

Merge 성공


이젠, Push 버튼을 눌러 GitHub에 있는 remote 저장소에도 적용 시키면 동기화 완료!!

Push
Push 완료


그럼 GitHub 저장소에 가서 확인 해 보면,

원본 프로젝트 동기화 완료

콘솔로 해도 되지만, Sourcetree GUI 툴을 이용해 눈으로 보면서 쉽게 하는 방법도 익혀두자.

이만 즐 코딩~~