티스토리 뷰

Git

[Git] Fork repository 최신화하기

sukvvon 2022. 3. 2. 23:53

github에서 fork 후 PR(pull requset)

Tistory #1 스킨을 사용하던 중 TOC의 필요성을 느꼈습니다. wbluke 님의 tistory-table-of-contents 프로젝트를 발견하여 감사하며 사용하던 중 추가하고 싶은 사항이 생각나 fork 후 pull request 하였습니다.

다행히 wbluke님께서 저의 PR을 merge 해 주셔습니다. 감사합니다.

그리고 fork된 repo에 원본으로부터 오늘까지 업데이트된 최신 사항을 반영해야하는데 처음 해보는 과정이어서 한 번 정리해 보았습니다.

git remote -v

git remote add upstream https://github.com/wbluke/tistory-table-of-contents.git 가 이미 된 상태입니다.

 sukvvon  ~/Desktop/tistory-table-of-contents   master  git remote -v
origin  https://github.com/sukvvon/tistory-table-of-contents.git (fetch)
origin  https://github.com/sukvvon/tistory-table-of-contents.git (push)
upstream        https://github.com/wbluke/tistory-table-of-contents.git (fetch)
upstream        https://github.com/wbluke/tistory-table-of-contents.git (push)

git romote -v를 통해 현재 remote 된 주소를 확인합니다. 여기서 originfork된 자신의 원격 repo의 주소이고 upstreamfork하기 전 원본 원격 repo의 주소입니다.

  • origin = fork된 자신의 원격 repo의 주소
  • upstream = fork하기 전 원본 원격 repo의 주소

git fetch upstream

 sukvvon  ~/Desktop/tistory-table-of-contents   master  git fetch upstream
remote: Enumerating objects: 17, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 9 (delta 3), reused 8 (delta 3), pack-reused 0
Unpacking objects: 100% (9/9), 1.65 KiB | 112.00 KiB/s, done.
From https://github.com/wbluke/tistory-table-of-contents
 * [new branch]      develop         -> upstream/develop
 * [new branch]      initial-feature -> upstream/initial-feature
 * [new branch]      master          -> upstream/master
 * [new tag]         v0.1.8          -> v0.1.8

git fetch upstream을 통해 upstream의 최신 커밋까지 내용을 가져오기만 합니다.(fetch)

이력을 받아오기만 한 것이므로 fetch 한 내용을 적용하기 위해선 merge를 해야합니다.

git checkout master

 sukvvon  ~/Desktop/tistory-table-of-contents   develop  git checkout master
Switched to branch 'master'

현재 brnach가 master가 아닌 다른 branch라면 git checkout master를 통해 master로 branch를 변경해야합니다.

master로 merge를 할 예정이기 때문입니다.

git merge upstream/master

 sukvvon  ~/Desktop/tistory-table-of-contents   master  git merge upstream/master
Updating e34391e..14b04ed
Fast-forward
 .gitignore      | 1 +
 README.md       | 6 +++++-
 dev/dev-toc.css | 1 +
 dev/dev-toc.js  | 4 ++--
 toc.css         | 1 +
 toc.js          | 6 +++---
 6 files changed, 13 insertions(+), 6 deletions(-)
 create mode 100644 .gitignore

fetch를 통해 가져오기만 한 내용을 git merge upstream/master를 통해 upstream/mastermerge 즉 병합합니다.

fetch한 내용을 그대로 local repo에 반영하는 것을 볼 수 있습니다.

git push origin master

 sukvvon  ~/Desktop/tistory-table-of-contents   master  git push origin master
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/sukvvon/tistory-table-of-contents.git
   e34391e..14b04ed  master -> master

fetchmerge한 것은 현재 local repo에서 일어난 일입니다. local repo에서 한 과정을 git push origin master를 통해 remote repo에 적용시켜주도록 합니다.

전에는 뒤쳐저 있다고 나왔었는데 현재는 원본 repo와 현재 fork된 repo의 커밋 위치가 동일하게 된 것을 알 수 있어 성공적으로 최신화가 이루어진 것을 알 수 있습니다.

참고

댓글