NotionNext 버전 업데이트 가이드
이 가이드는 개인화된 설정을 보존하면서 블로그를 업스트림 최신 버전으로 안전하게 업데이트하는 방법을 설명합니다.
아래 흐름을 따르면 다음을 할 수 있습니다.
- NotionNext의 최신 기능과 수정 사항을 가져오기
- 개인 설정(아바타, 제목, 도메인 등) 보존하기
- 발생 가능한 코드 충돌을 안전하게 처리하기
이 가이드는 Vercel 배포 시나리오를 기준으로 합니다. 다른 플랫폼은 테스트하지 않았습니다.
브랜치 관리 전략
이 전략은 NotionNext 공식 업그레이드 가이드의 권장 사항을 참고하며, 두 브랜치를 사용하는 관리 방식을 전제로 합니다.
브랜치 설명
| 브랜치 | 용도 | 업데이트 전략 | 배포 상태 |
|---|---|---|---|
main | 업스트림 원본 코드 동기화 | fast-forward 병합 | 배포하지 않음 |
deploy | 프로덕션 환경 코드 | main 병합 + 개인화 보존 | Vercel 자동 배포 |
feature/* | 기능 개발 | deploy 기준으로 생성 | 배포하지 않음 |
구조 예시
text
GitHub Fork Repository
├── main (tangly1024/NotionNext 동기화)
├── deploy (프로덕션 브랜치 -> Vercel)
└── feature/* (개발 브랜치)사전 준비
1. Vercel 프로덕션 브랜치 설정(중요)
Vercel에서 프로덕션 브랜치를 deploy로 설정합니다.
- Vercel Dashboard에 로그인합니다.
- NotionNext 프로젝트로 들어갑니다.
- Settings → Git을 클릭합니다.
- Production Branch 설정을 찾습니다.
- 기본
main을deploy로 바꿉니다. - 설정을 저장합니다.
이렇게 설정하면
deploy브랜치 업데이트만 프로덕션 배포를 트리거하고,main브랜치는 업스트림 동기화 용도로만 사용됩니다.
2. 업스트림 저장소 설정(최초 1회)
bash
# 업스트림 저장소 추가
git remote add upstream https://github.com/tangly1024/NotionNext.git
# 설정 확인
git remote -v예상 출력:
text
origin https://github.com/[your-username]/NotionNext.git (fetch)
origin https://github.com/[your-username]/NotionNext.git (push)
upstream https://github.com/tangly1024/NotionNext.git (fetch)
upstream https://github.com/tangly1024/NotionNext.git (push)
upstream행이 보이지 않으면 업스트림 저장소가 제대로 추가되지 않은 것입니다.
3. 개인화 파일 파악
업데이트 전에 개인화한 변경을 확인합니다.
bash
# 개인화 변경 파일 목록 확인
git diff --name-only main..deploy자주 개인화되는 파일:
blog.config.js- 블로그 설정public/avatar.png- 아바타public/favicon.ico- 사이트 아이콘pages/_app.js- 전역 스크립트.env.local- 환경 변수
표준 업데이트 흐름
단계 1: main 브랜치 동기화
bash
# 1.1 main 브랜치로 전환
git checkout main
# 1.2 로컬 최신 상태 가져오기(여러 장비 간 불일치 방지)
git pull origin main
# 1.3 업스트림 업데이트 가져오기
git fetch upstream
# 1.4 업스트림 코드 병합
git merge upstream/main
# 1.5 내 저장소로 푸시
git push origin main단계 2: deploy 브랜치 업데이트
bash
# 2.1 deploy 브랜치로 전환
git checkout deploy
# 2.2 중요: 원격 deploy 브랜치 동기화
git pull origin deploy
# 2.3 main 브랜치 업데이트 병합
git merge main단계 3: 충돌 처리
충돌이 발생하면 파일 유형에 따라 처리합니다.
| 파일 유형 | 처리 전략 | Git 명령 |
|---|---|---|
yarn.lock | 업스트림 버전 수락 | git checkout --theirs yarn.lock |
blog.config.js | 수동 병합 | 개인 설정을 보존하고 새 설정 항목 추가 |
public/avatar.png | 로컬 버전 보존 | git checkout --ours public/avatar.png |
public/favicon.* | 로컬 버전 보존 | git checkout --ours public/favicon.* |
처리가 끝나면:
bash
# 해결된 파일 추가
git add .
# 병합 커밋
git commit -m "merge: sync upstream updates
- keep custom configuration
- resolve conflict files: [file list]"단계 4: 의존성 업데이트와 테스트
bash
# 4.1 정리 후 의존성 재설치
rm -rf node_modules
yarn install
# 4.2 로컬 테스트
yarn dev
# http://localhost:3000 접속 후 정상 동작 확인
# 4.3 빌드 테스트
yarn build
# 4.4 원격으로 푸시
git push origin deploy자동화 스크립트
프로젝트는 자동화 업데이트 스크립트 scripts/update.sh를 제공합니다. 기능은 다음과 같습니다.
- 사전 조건 검사
- 설정 파일 자동 백업
- 브랜치 동기화와 병합
- 안전한 충돌 처리
- 의존성 업데이트
사용 방법
bash
# 실행 권한 부여(최초 1회)
chmod +x scripts/update.sh
# 업데이트 실행
./scripts/update.sh스크립트는 전체 업데이트 흐름을 안내하고, 수동 처리가 필요한 상황에서는 명확한 안내를 제공합니다.
롤백
방법 1: Git 롤백
bash
# 커밋 히스토리 확인
git log --oneline -10
# 지정 버전으로 롤백
git reset --hard [commit-hash]
# 강제 푸시(주의해서 사용)
git push origin deploy --force-with-lease방법 2: Vercel에서 복구
실수로 코드가 덮어써졌다면 Vercel 배포 히스토리에서 복구할 수 있습니다.
- Vercel Dashboard에 로그인합니다.
- 프로젝트 → Deployments로 들어갑니다.
- 정상 동작했던 과거 배포를 찾고 오른쪽 점 세 개를 클릭합니다.
- "View Source"를 선택해 당시 소스 코드를 확인합니다.
- 오른쪽 위 링크를 눌러 GitHub의 해당 버전으로 이동할 수 있습니다.
문제 해결
Vercel 배포 실패
문제: 푸시 후 Vercel 빌드가 실패합니다.
해결 방법:
- Vercel 빌드 로그를 확인해 구체적인 오류를 찾습니다.
- 의존성 문제라면:bash
rm -rf node_modules yarn.lock yarn install git add yarn.lock git commit -m "fix: regenerate yarn.lock" git push - 환경 변수 문제라면 Vercel Dashboard → Settings → Environment Variables를 확인합니다.
많은 파일 충돌
문제: 병합 중 많은 충돌이 발생해 처리하기 어렵습니다.
해결 방법:
bash
# 현재 병합 중단
git merge --abort
# 업스트림 최근 커밋 확인
git log upstream/main --oneline -20
# 단계별 병합(더 이른 커밋부터 병합)
git merge [earlier-commit]
# 충돌 해결 후 다음 커밋 병합 계속로컬과 원격 불일치
문제: 푸시할 때 rejected가 표시됩니다.
해결 방법:
bash
# 먼저 원격 업데이트 가져오기
git pull origin deploy --rebase
# 가능한 충돌을 해결한 뒤 푸시
git push origin deploy주의 사항
- 업데이트 주기: 1-2주마다 업데이트를 확인하는 것을 권장하며, 중요한 보안 업데이트는 즉시 처리해야 합니다.
- 중요 파일 백업: 업데이트 전
blog.config.js와 기타 개인화 설정을 백업합니다. - 테스트 검증: 업데이트 후 반드시 로컬에서 테스트하고, 정상 동작을 확인한 뒤 배포합니다.
- 수정 기록: 이후 업데이트를 쉽게 하려면 개인화 수정 목록을 유지하는 것이 좋습니다.
관련 자료
문서 버전: 0.1.0 | 마지막 업데이트: 2025-08-19
