본문 바로가기
개발

[Git] fork 저장소에서 original 저장소의 변경내용 반영

by 박영귤 2024. 3. 22.

Git에는 fork기능이 있습니다. 어떠한 레파지토리를 그대로 복사해서 새로운 레파지토리를 만드는 기능입니다. 하지만 복사된 레파지토리는 기존 레파지토리와 연결되어 있습니다. 이 연결을 통해서 기존 레파지토리의 변경 내용을 fork한 저장소에 반영할 수 있는 것입니다.


먼저 fork한 레파지토리에서 아래 명령어를 입력하여봅시다.

git remote -v

이러면 아래와 같이 출력됩니다.

origin  https://github.com/<계정이름>/<레파지토리이름>.git (fetch)
origin  https://github.com/<계정이름>/<레파지토리이름>.git (push)

현재는 origin이라는 원격저장소만 연결되어있다. 즉, 지금은 fork된 레파지토리만 연결되어있다는 의미이다. 이제 원본 레파지토리를 연결시켜보자.

(참고로 origin은 대표적인 원격저장소 별칭이다.)

 

origin주소를 추가할 때 처럼 하면 된다.

$ git remote add upstream https://github.com/<원본레파지토리 계정이름>/<레파지토리이름>.git

upstream이라는 별칭으로 연결시켰다. 그 후 다시 git remote -v 명령어를 입력시키면 아래와 같이 출력된다.

origin  https://github.com/A/<레파지토리이름>.git (fetch)
origin  https://github.com/A/<레파지토리이름>.git (push)
upstream        https://github.com/B/<레파지토리이름>.git (fetch)
upstream        https://github.com/B/<레파지토리이름>.git (push)

이러면 이제 연결이 되었다.

이제 upstream이라는 별칭을 가지고 있는 기존 레파지토리의 변경내용을 가져와보자.

git fetch upstream
remote: Enumerating objects: 17, done.
remote: Counting objects: 100% (16/16), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 13 (delta 5), reused 0 (delta 0), pack-reused 0
오브젝트 묶음 푸는 중: 100% (13/13), 9.41 KiB | 602.00 KiB/s, 완료.
https://github.com/B/<레파지토리이름> URL에서
 * [새로운 브랜치]   main       -> upstream/main

이렇게 출력되었다는 것은, 현재 새로운 브랜치 upstream/main에 기존 레파지토리의 변경내용이 저장되었다는 의미이다.

git checkout upstream/main

이 명령어를 통해 upstream/main 브랜치에 가보면 변경된 것을 볼 수 있다. 그렇다면 우리는 이 변경내용을 merge를 통해 다시 fork레파지토리의 main브랜치로 가지고 와야한다.

git merge upstream/master

그 후 원격저장소로 올리면 된다.

git push

'개발' 카테고리의 다른 글

[Git] 로컬에서 git url 세팅하는 법  (0) 2024.03.20
파이썬 대화형으로 실행하기  (0) 2023.12.26
form data란?  (0) 2023.11.29
CORS 에러, 무엇일까?  (5) 2023.11.29
post api 간단하게 테스트  (1) 2023.11.24