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


Fork한 repository를 최신으로 동기화시켜할 때가 있습니다.

  • 오픈소스에 단발성이 아닌 지속적으로 contribution 하려 할 때
  • 수정해서 사용하기 위해 fork 해온 원본 repository에서 업데이트 된 부분을 받아올때.
  • 기타 등등

이를 위해 먼저 원본 repository를 remote repository로 추가해야합니다. Fork 해온 repository 에서 remote repository를 확인하면 아래와 같이 나옵니다.

$ git remote -v
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

여기에 동기화해오고 싶은 원본 repository를 upstream 이라는 이름으로 추가합니다.

$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

upstream repository가 제대로 추가 되었는지 확인합니다.

$ git remote -v
origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

이제 upstream repositoy로 최신 업데이트를 가져올 차례입니다. Git의 fetch 명령어를 통해서 upstream repository의 내용을 불러옵니다.

$ git fetch upstream
remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
 * [new branch]      master     -> upstream/master

upstream repository의 master branch로 부터 나의 local master branch로 merge 합니다.

$ git checkout master
Switched to branch 'master'

$ git merge upstream/master
Updating a422352..5fdff0f
Fast-forward
 README                    |    9 -------
 README.md                 |    7 ++++++
 2 files changed, 7 insertions(+), 9 deletions(-)
 delete mode 100644 README
 create mode 100644 README.md

이 과정은 local repository에서 일어난 것이기 때문에 push를 통해 remote repository에도 적용시켜주면 완료됩니다~~!!

$git push origin master