(참고: 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 할 수 있습니다.
'version control > git' 카테고리의 다른 글
git lfs 마이그레이션 방법 (1) | 2020.08.04 |
---|---|
Github organization 나오는 법 (0) | 2020.07.15 |
Github 프로젝트 rename 이후 로컬 파일 remote 주소 설정 방법 (0) | 2020.07.09 |
git 이미 커밋한 파일의 변경사항을 무시할 때 (0) | 2020.06.26 |
gitk, git-gui 한글이 깨져서 보일 때 (0) | 2020.06.25 |