(참고: github docs 'syncing a fork')

 

This branch is 1 commit behind ~~:master.

깃허브에서 한 리포지토리를 포크해놨는데 보니까 원본 리포지토리에 커밋이 추가돼서 제 master 브랜치가 원본 리포지토리보다 1 커밋 뒤에 있다고 나옵니다.

깃허브에서는 포크한 리포지토리를 자동으로 업데이트해주지는 않습니다. 의도하지 않은 결과가 될 수도 있어서 그럴 듯 합니다.

그래서 로컬에서 작업해줘야 합니다.

 

일단 원본 리포지토리가 remote에 등록되어 있어야 합니다. 보통 upstream이라는 이름을 씁니다.

git remote -v로 확인했을 때 upstream이 없으면 등록을 해줘야 합니다.

$ git remote add upstream https://github.com/~~~/~~~~~.git

 

그 다음 upstream에서 커밋 내역을 fetch 또는 pull로 받아오고, master branch와 merge를 시킵니다. 마지막으로 push를 해서 제 github repo에 커밋을 반영시킵니다.

$ git fetch upstream
# 또는
$ git pull upstream

$ git merge upstream/master
$ git push

이때 merge conflict가 생기는 경우를 고려해줘야 합니다. local commit이 있었던 경우, soft reset을 해서 변경 사항을 stash에 넣고 upstream fetch, merge를 시킨 후 다시 stash에서 꺼내는 식으로 해야할 듯 합니다.

나중에 이 방법도 정리해서 게시물로 올리겠습니다.

 

 

This branch is even with ~~:master.

push까지 하면 포크한 리포지토리의 커밋을 다 따라잡게 됩니다

 

이 과정을 자동으로 하려면 crontab에 등록을 하면 될 듯 합니다.

 

 

+ 2021. 7. 11.

언제부터인지 "Fetch upstream" 버튼이 깃허브에 추가됐네요

원본 레포랑 차이나서 conflict 발생하는 경우는 어떻게 될지 잘 모르겠는데, 차이 안나면 아주 손쉽게 pull 할 수 있습니다.

반응형