[GitHub 100일 챌린지] Day 53 - Upstream 동기화 실전
[GitHub 100일 챌린지] Day 53 - Upstream 동기화 실전
100일 챌린지 Day 53 - Fork한 저장소를 원본(Upstream)과 동기화하는 다양한 방법을 실습합니다.
배울 내용
- Upstream 동기화가 필요한 이유
- Merge와 Rebase 방식의 동기화
- 충돌 해결 및 자동화 스크립트
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 upstream→git merge upstream/main- 정기적인 동기화로 충돌 최소화
- GitHub 웹에서도 동기화 가능
다음: Day 54 - Fork 워크플로우 →
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
