[DEV] IT | 프로그래밍 | 종합

GitHub에서 포크(fork)한 레포지토리에 원본(업스트림) 저장소의 최신 업데이트를 반영하는 방법

ParkSaJang 2025. 5. 3.

1️⃣ 원본 저장소(업스트림) 등록하기

포크를 하면 내 레포지토리에는 원본 레포지토리의 정보가 등록되지 않아요. 그래서 먼저 업스트림(remote)를 등록해야 합니다.

git remote add upstream https://github.com/원본저장소아이디/원본저장소이름.git

 

확인:
업스트림이 잘 등록되었는지 확인하려면 다음 명령어를 실행해 보세요.

git remote -v

결과 예시:

origin    https://github.com/내아이디/내레포지토리.git (fetch)
origin    https://github.com/내아이디/내레포지토리.git (push)
upstream  https://github.com/원본아이디/원본레포지토리.git (fetch)
upstream  https://github.com/원본아이디/원본레포지토리.git (push)

 


2️⃣ 원본 레포지토리에서 변경사항 가져오기

이제 원본의 최신 내용을 가져와야 해요.

git fetch upstream

이렇게 하면 원본 저장소(업스트림)의 변경사항이 내 로컬 저장소에만 다운로드됩니다.

 


3️⃣ 내 브랜치에 병합하기 (보통 메인 브랜치)

보통 main 또는 master 브랜치를 업데이트하죠. 예를 들어 main 브랜치를 업데이트하려면:

git checkout main
git merge upstream/main

 

혹은 원본이 master 브랜치인 경우:

git checkout master
git merge upstream/master

 

💡 주의:
병합 과정에서 충돌(conflict)이 생길 수 있어요. 이 경우 충돌을 해결하고 커밋해야 합니다.

 


4️⃣ (선택) 내 깃허브 레포지토리에 푸시하기

로컬에서 병합이 끝났으면 깃허브에 반영해야 하죠:

git push origin main

 

✨ 고급: 리베이스로 깔끔하게 유지하기

만약 히스토리를 깔끔하게 유지하고 싶다면 병합 대신 리베이스를 사용할 수도 있어요:

git checkout main
git fetch upstream
git rebase upstream/main

 

리베이스 후에도 푸시할 때는 강제 푸시가 필요할 수 있습니다:

git push origin main --force

 


✅ 요약

  1. git remote add upstream [원본 URL]
  2. git fetch upstream
  3. git checkout main
  4. git merge upstream/main (또는 git rebase upstream/main)
  5. git push origin main
반응형

댓글