포스트

[GitHub 100일 챌린지] Day 53 - Upstream 동기화 실전

[GitHub 100일 챌린지] Day 53 - Upstream 동기화 실전

100일 챌린지 Day 53 - Fork한 저장소를 원본(Upstream)과 동기화하는 다양한 방법을 실습합니다.

배울 내용

  1. Upstream 동기화가 필요한 이유
  2. Merge와 Rebase 방식의 동기화
  3. 충돌 해결 및 자동화 스크립트

1. 동기화가 필요한 순간

1
2
3
4
5
# 원본 저장소는 계속 발전
facebook/react: 100 commits ahead

# 내 Fork는 뒤처짐
myname/react: 0 commits ahead, 100 commits behind

동기화 시점:

  • 새 기능 개발 시작 전
  • Pull Request 생성 전
  • 주기적 (매일/매주)

2. Merge 방식 동기화

1
2
3
4
5
6
7
8
9
10
11
12
# 1. Upstream 최신 가져오기
git fetch upstream

# 2. Main 브랜치로 이동
git checkout main

# 3. Merge
git merge upstream/main

# 4. 충돌 해결 (필요시)
# 5. Origin에 Push
git push origin main

3. Rebase 방식 동기화

1
2
3
4
5
# 깔끔한 히스토리 유지
git fetch upstream
git checkout main
git rebase upstream/main
git push origin main --force-with-lease

4. GitHub 웹에서 동기화

1
2
3
4
1. GitHub에서 내 Fork 페이지 접속
2. "Sync fork" 버튼 클릭
3. "Update branch" 선택
4. 로컬에서 git pull origin main

5. 작업 브랜치 동기화

1
2
3
4
5
6
# 작업 브랜치에 최신 main 반영
git checkout feature-branch
git fetch upstream
git merge upstream/main
# 또는
git rebase upstream/main

6. 충돌 해결

1
2
3
4
5
6
7
# 충돌 발생 시
git merge upstream/main
# CONFLICT in file.js

# 파일 수정 후
git add file.js
git commit -m "Merge upstream/main"

7. 자동화 스크립트

1
2
3
4
5
6
7
#!/bin/bash
# sync-upstream.sh
git fetch upstream
git checkout main
git merge upstream/main
git push origin main
echo "✅ Synced with upstream"

정리

완료 체크:

  • Upstream을 Merge 방식으로 동기화할 수 있다
  • Rebase 방식의 장단점을 이해했다
  • 충돌을 해결할 수 있다

핵심 요약:

  • git fetch upstreamgit merge upstream/main
  • 정기적인 동기화로 충돌 최소화
  • GitHub 웹에서도 동기화 가능

다음: Day 54 - Fork 워크플로우


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.