GitHub 연동 배포 실습 예시

저장소 연결부터 미리보기·되돌리기까지 시나리오로 배우기  |  ← 레퍼런스로 돌아가기

이 파일의 목적GitHub 연동 레퍼런스를 보완하는 실습 시나리오
레퍼런스 문서GitHub_Deploy_Manual.html
작성일2026년 6월 13일
● 초급 처음 연결하기 코드를 GitHub에 올리고 Vercel에 잇기
G-1초급GitHub 저장소를 Vercel에 연결해 첫 자동배포
AI로 만든 Next.js 앱 코드가 내 컴퓨터에 있습니다. 이걸 GitHub에 올리고 Vercel에 연결해, 앞으로 코드만 올리면 자동으로 배포되게 만듭니다.
단계별 실행
  1. 코드를 GitHub 저장소에 올린다

    git/GitHub란? git은 코드 변경을 시점별로 기록·관리하는 도구이고, GitHub는 그 기록을 인터넷에 보관·공유하는 저장소 서비스입니다. 아래 5줄은 차례로 '기록 시작(init) → 현재 파일 묶기(add) → 한 시점으로 저장(commit) → 올릴 곳 지정(remote add) → 실제 업로드(push)'를 뜻하며, 이 push가 곧 Vercel 배포의 방아쇠입니다.

    사전 준비: git이 설치돼 있고 최초 1회 사용자 정보(git config --global user.name "이름" / git config --global user.email "메일")가 설정돼 있어야 합니다. 또 HTTPS로 push하면 GitHub 로그인 인증이 필요한데, 가장 쉬운 길은 gh auth login(GitHub CLI)으로 한 번 인증해 두는 것입니다(또는 Personal Access Token 발급). push할 때 인증 창이나 토큰 입력 프롬프트가 뜨는 것은 정상입니다. GitHub에서 새 저장소를 만든 뒤, 프로젝트 폴더에서 아래를 실행합니다. (저장소 주소는 GitHub가 안내하는 값으로 바꾸세요.)

    git init -b main
    git add .
    git commit -m "first commit"
    git remote add origin https://github.com/내계정/my-first-app.git
    git push -u origin main
  2. Vercel에서 Import 한다

    대시보드 Add New ▾ → Project → 방금 올린 저장소 옆 Import 클릭.

  3. 구성 화면에서 Deploy

    Framework Preset이 Next.js로 자동 감지되면 그대로 Deploy. 환경 변수가 필요하면 여기서 추가합니다(G-4 참고).

  4. 빌드가 끝나면 라이브 URL 확인

    완료되면 my-first-app.vercel.app 형태의 주소가 발급됩니다. 이 링크를 누구에게나 공유할 수 있습니다.

이제 저장소와 Vercel 프로젝트가 묶였습니다. 다음부터는 git push만 하면 Vercel이 알아서 빌드·배포합니다. 빌드 명령을 직접 칠 필요가 없습니다.
GitHub 계정으로 Vercel에 가입(O-2)했다면 저장소 목록이 바로 보입니다. 처음이면 GitHub App 설치 화면에서 필요한 저장소만 골라 권한을 주세요.
G-2초급push 한 번으로 사이트 업데이트하기
배포된 사이트의 제목 문구를 바꾸고 싶습니다. 연결을 해 뒀으니, 코드를 고쳐 올리기만 하면 사이트가 자동으로 갱신되는지 확인합니다.
단계별 실행
  1. 코드를 수정한다

    예를 들어 메인 페이지의 제목 텍스트를 바꿉니다.

  2. 변경을 main에 올린다
    git add .
    git commit -m "헤더 문구 수정"
    git push
  3. Vercel 대시보드에서 새 배포를 지켜본다

    프로젝트 → Deployments에 새 항목이 Building 상태로 뜨고, 곧 Ready로 바뀝니다.

    vercel.com/my-first-app/deployments
    헤더 문구 수정  main · 방금● Building
    first commit  main · 5분 전Production
  4. 완료되면 사이트 새로고침

    같은 주소(...vercel.app)에서 바뀐 문구가 보입니다. 주소는 그대로, 내용만 갱신됩니다.

main에 올린 변경은 곧 프로덕션이 됩니다. 실서비스라면 곧바로 main에 올리지 말고, 다음 G-3처럼 브랜치+PR로 미리 확인한 뒤 합치는 습관을 들이세요.
● 중급 안전하게 바꾸기 미리보기와 환경 변수로 실서비스를 보호
G-3중급브랜치 + PR로 미리보기 만들어 검토하기
큰 변경(예: 디자인 개편)을 작업 중입니다. 완성 전 모습을 실서비스(main)에 노출하고 싶지 않지만, 동료에게는 실제 동작하는 화면을 보여 주고 싶습니다.
단계별 실행
  1. 새 브랜치를 만들어 작업한다
    git checkout -b redesign
    # ...수정...
    git add . && git commit -m "디자인 개편 초안"
    git push -u origin redesign
  2. GitHub에서 PR을 연다

    redesignmain 방향으로 Pull Request를 생성합니다.

  3. Vercel 봇의 미리보기 코멘트를 연다

    잠시 뒤 PR에 미리보기 URL 코멘트가 달립니다. Visit Preview를 누르면 main과 분리된, 이 변경만 반영된 화면이 열립니다.

    github.com/.../pull/7
    vercel bot
    ✓ Ready  redesign-my-first-app.vercel.app ↗
  4. 검토가 끝나면 Merge

    PR을 main에 합치면, 그 순간 프로덕션 배포가 생성되어 실서비스에 반영됩니다.

PR을 여는 순간 Preview 배포가, main에 합치는 순간 Production 배포가 생깁니다. "검토용 미리보기 → 합치면 실서비스"라는 두 단계가 자동으로 분리됩니다.
미리보기 URL은 브랜치에 새 commit을 올려도 같은 주소를 유지합니다(브랜치 기준 URL). 그래서 리뷰 중 한 번 공유한 링크를 계속 써도 됩니다.
G-4중급API 키 같은 비밀값을 환경 변수로 안전하게
앱이 외부 API(예: AI 모델 API)를 호출하는데, API 키를 코드에 그대로 적었더니 GitHub에 노출됩니다. 키를 코드에서 분리해 안전하게 관리합니다.
단계별 실행
  1. 코드에서 키를 환경 변수 참조로 바꾼다

    키 문자열 대신 process.env.MY_API_KEY 같은 참조를 쓰도록 AI에게 요청합니다. 실제 값은 코드에 남기지 않습니다.

    ⚠️ 중요: 환경 변수가 비밀로 지켜지는 것은 그 키를 서버 사이드(Vercel Functions, API 라우트, 서버 컴포넌트)에서만 쓸 때입니다. 브라우저에서 직접 호출하는 코드(클라이언트 컴포넌트·정적 페이지)에 넣은 키나, NEXT_PUBLIC_(Vite는 VITE_) 접두사를 붙인 변수는 빌드 시 브라우저 번들에 그대로 포함되어 최종 사용자에게 노출됩니다. 외부 API 키 같은 비밀값에는 절대 이 접두사를 붙이지 말고, 반드시 서버 함수를 거쳐 호출하세요.

  2. Vercel 대시보드에 값을 등록한다

    프로젝트 Settings → Environment Variables에서 이름(MY_API_KEY)과 값을 추가합니다. 적용 환경을 Production / Preview / Development에서 선택합니다.

    vercel.com/my-first-app/settings/environment-variables
    MY_API_KEY
    ••••••••••••
    적용: Production Preview
  3. 재배포로 값을 반영한다

    환경 변수를 추가/변경한 뒤에는 다시 배포해야 적용됩니다. 새 commit을 push하거나 대시보드에서 Redeploy 합니다. 대시보드 Redeploy 시에는 빌드 캐시(Use existing Build Cache)를 끄고 재빌드하는 것이 안전합니다 — 캐시를 그대로 쓰면 빌드 시점에 주입되는 변수가 갱신되지 않아 '바꿨는데 옛 값이 그대로'인 상황이 생길 수 있습니다.

민감한 값(Sensitive)으로 등록하면 한 번 저장 후 대시보드에서 다시 볼 수 없습니다(보안상 의도된 동작). 값을 따로 안전한 곳에 보관해 두세요. 또한 Sensitive 옵션은 Preview·Production에서만 켤 수 있고 Development에서는 켤 수 없습니다.
테스트용 키와 실서비스 키를 환경별로 분리하세요. Preview엔 테스트 키, Production엔 실제 키를 넣으면 사고를 줄일 수 있습니다.
● 고급 사고 대응 잘못 나간 배포를 빠르게 되돌리기
G-5고급프로덕션 사고를 즉시 되돌리기 (Instant Rollback)
방금 main에 합친 변경이 실서비스에서 오류를 냅니다. 원인을 고치는 데는 시간이 걸리니, 일단 직전의 멀쩡한 버전으로 빠르게 되돌립니다.
방법 A — 대시보드에서 Instant Rollback
  1. 프로젝트 Overview → Production Deployment 타일

    Instant Rollback을 선택하고, 되돌릴 과거 배포(직전 정상 버전)를 고릅니다.

  2. Confirm Rollback

    재빌드 없이 도메인을 그 배포로 다시 연결하므로 거의 즉시 반영됩니다. 프로덕션 사고 복구에 적합합니다.

방법 B — Git revert (이력에 남기기)
git revert HEAD      # 문제 커밋을 되돌리는 새 커밋 생성
git push             # main 갱신 → 이전 상태로 재배포
Instant Rollback은 재빌드를 하지 않습니다. 그래서 빠르지만, 롤백 시점의 빌드·환경 변수 상태로 돌아갑니다. 또 롤백 후에는 프로덕션 도메인 자동 할당이 꺼져, main에 push해도 자동으로 라이브되지 않을 수 있습니다. 이는 버그가 아니라 의도된 안전장치입니다 — 방금 되돌린 안정 버전을 다음 push가 곧바로 덮어써 사고가 재발하는 것을 막기 위함입니다. 원인을 고친 뒤 대시보드의 Undo Rollback 또는 vercel promote로 자동 반영을 다시 켜면 됩니다.
플랜 차이: Hobby는 직전 배포로만 롤백할 수 있고, Pro/Enterprise는 과거에 프로덕션이었던 모든 배포로 롤백할 수 있습니다.
"빠른 응급 복구"는 Instant Rollback(방법 A), "이력에 정식으로 남기는 정정"은 Git revert(방법 B). 사고 순간엔 A로 멈추고, 진정된 뒤 B로 깔끔히 정리하는 조합이 안전합니다.

다음 문서: ③ MCP·CLI·v0 직접 배포 매뉴얼 →