github 에서 fork 한 project 는 pull request 를 통해서 원본에 반영할 수 있습니다만,
여러가지 이유로 pull request 하지 못하거나, 거절당한 경우 원본과 별개로 유지될 수도 있습니다.
이때 원본쪽의 변경사항을 sync 받아올 필요가 있겠죠.
간단한 Sample 을 통해서 이런 과정을 정리해 봅니다.
가정합니다.
위의 원본에서 fork 버튼을 누르면 아래와 같이 fork 본이 생성됩니다.
git clone git@github.com:fronteer-kr/terraform.git
추후 push 편의를 위해 SSH clone URL 을 사용했습니다.
git clone 까지만 한 상태에서
git remote -v
하면 아래와 같이 나옵니다.
여기서 fork 한 원본은 remote 에 추가 합니다. (원본은 readonly 이므로 HTTPS clone URL 을 사용)
git remote add upstream https://github.com/sintaxi/terraform.git
다시 git remote -v 하면 아래와 같이 remote 가 추가된 내용이 나옵니다.
remote 가 origin 과 upstream 2개다 되는거죠.
clone 한 PC 와 fork 본 간에는 commit & push 등 일반적인 git 작업을 진행하면 됩니다.
그러다가 fork 한 원본의 변경사항과 sync 를 맞추어야할 상황이 발생하면...
upstream 이 변경내용을 PC 로 가져옵니다. (pull)
git pull upstream master
충돌된 내용이 있거나 하면 정리해야겠죠.
git push origin master
이러면 fork 본에 merge 된 내용이 push 됩니다.