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 |