[TIL-0516] GitHub Organization에서 Vercel 무료 배포

jiny·2025년 6월 2일

캡스톤2

목록 보기
18/22

🌟 GitHub Organization의 레포지토리를 Vercel로 배포

팀 프로젝트를 위해 GitHub Organization에서 각자의 레포지토리(FE, BE, AI)를 만들어서 작업을 하게 되었다.

프론트엔드 레포지토리(FE)를 Vercel로 배포하려고 하니, GitHub Organization에서 배포하려면 Vercel Pro 플랜이 필요하다는 알림창이 떴다.

GitHub Organization의 레포지토리는 Vercel의 무료 플랜(Hobby)으로는 직접 배포할 수 없다고 한다.

이 문제를 해결하는 방법은 크게 3가지가 있다.

  1. Pro Trial 14일 체험 시작

    • Pro Trial - Free for two weeks을 선택해서 14일 무료 체험으로 배포할 수 있다.
    • 이건 개인 계정의 hj's projects 팀을 업그레이드해서 사용하는 방식이다.
    • 14일 동안 제한 없이 사용이 가능하지만, 그 이후에는 결제가 필요하다.
  2. Organization 소유자가 Pro 팀 생성 후 연결

    • 조직(Capstone2-Tranner)을 Pro 플랜으로 전환하고 그 팀에서 배포할 수 있다.
    • 이건 조직 계정의 유료 플랜이 필요해서, 비용이 발생한다.
  3. 개인 GitHub 저장소로 복사해서 배포

    • 가장 현실적인 무료 해결법이다.
    • 해결 단계
      1. Capstone2-Tranner/FE를 포크하거나 클론해서 개인 계정(hj7321)의 레포지토리로 복사
      2. 개인 GitHub 계정으로 만든 레포는 Vercel 무료 플랜(Hobby)으로 배포 가능
      3. 팀원과 공유할 땐 해당 링크 공유

🌟 개인 계정으로 옮겨서 Vercel에 무료 배포

GitHub Organization 레포지토리를 개인 계정으로 옮겨서 Vercel에 무료(Hobby)로 배포하는 방법은 총 2가지가 있다.

  1. 포크(Fork)하는 방법

    • 개념

      • 기존 레포지토리를 내 GitHub 계정 아래 복제본으로 가져오는 것
      • GitHub UI에서 클릭 몇 번으로 간단히 생성 가능
    • 방법

      1. GitHub에서 Capstone2-Tranner/FE 레포지토리 페이지로 이동
      2. 오른쪽 상단 [Fork] 버튼 클릭
      3. 내 계정(hj7321) 선택 → 자동으로 hj7321/FE 레포지토리 생성됨
    • 장점

      • 매우 간편하고 빠름
      • 레포 변경 이력(history)도 그대로 유지
      • 원본 레포와 연결되어 있어서 추후 원본 업데이트도 병합 가능
    • 단점

      • "Forked from Capstone2-Tranner/FE"라는 표시가 뜸
      • 만약 개인 프로젝트처럼 완전히 분리하고 싶으면 이게 보기 싫을 수 있음
  1. 클론(Clone)하는 방법

    • 개념

      • 원본을 로컬에 복사한 뒤, 내가 새로 만든 개인 레포지토리에 푸시하는 방식
      • 완전히 독립적인 레포지토리가 생성됨
    • 방법

      1. 빈 폴더에 원본 클론 (VSCode 터미널에 입력)

        git clone https://github.com/Capstone2-Tranner/FE.git .
      2. 기존 origin 삭제 & 새 origin 설정 (VSCode 터미널에 입력)

        git remote remove origin
        git remote add origin https://github.com/hj7321/FE.git

        origin이란?

        • Git에서 현재 연결된 기본 원격 저장소(Remote Repository)를 의미함
        • 보통 git clone했을 때 자동으로 연결되는 리모트 주소
        • 예를 들어 다음 명령어로 클론하면
          git clone https://github.com/hj7321/FE.git
          이때 Git은 내부적으로 이렇게 저장함
          origin → https://github.com/hj7321/FE.git

        git remote remove origin을 하는 이유

        내가 원래 작업하던 레포는 Capstone2-Tranner/FE였고, 그걸 clone 한 게 아니라 폴더를 그냥 만들었거나 다른 방식으로 연결했을 때 Git이 연결된 origin을 잘못 알고 있을 수 있음

        💡 remove/add가 필요한 상황

        상황remove/add 필요 여부
        Capstone2 조직 레포를 직접 clone 했을 때✅ 필요함 (origin이 조직으로 돼 있으니까 바꿔야 함)
        내가 내 포크(hj7321)를 clone 했을 때❌ 필요 없음 (이미 origin이 내 레포로 되어 있음)
      3. GitHub에서 개인 레포지토리 생성 (비어 있는 레포지토리)

        • GitHub 웹사이트에서 hj7321/FE와 같이 새 저장소(레포지토리) 만들기
        • README, .gitignore는 체크 해제 (비어 있어야 푸시됨)
      4. 푸시

        git push -u origin main
    • 장점

      • 레포 이름과 설명을 자유롭게 설정 가능
      • 완전히 독립된 프로젝트처럼 보임
      • "Forked from" 같은 표시 없음
    • 단점

      • Git 명령어에 익숙하지 않으면 살짝 번거로울 수 있음

🌟 포크(Fork) 방식이 협업 중 개발에 더 적합한 이유

계속 개발 중인 협업 상태라면 포크(Fork) 방식이 훨씬 나은 선택이다.
그 이유는 다음과 같다.

항목설명
원본과 연결 유지포크하면 Capstone2-Tranner/FE 원본과 연결된 상태로 내 개인 계정에 복사됨
원본 업데이트 반영 가능git fetch upstreamgit merge로 최신 상태를 유지하면서 개발 가능
기여 방식 그대로 유지 가능개인 레포지토리에서 개발 후 Pull Request(PR)을 보내서 원본 프로젝트에 반영 요청 가능
협업 흐름 자연스러움조직에서 공동 개발 중일 경우, 개인 브랜치처럼 활용 가능
  • PR이 필요한 경우 vs. 안 해도 되는 경우

    상황PR 필요 여부설명
    조직 레포에 내 코드 반영하고 싶다✅ 필요함포크한 후 PR을 통해 원본에 코드 merge 요청
    그냥 개인적으로 실험/배포만 한다❌ 필요 없음원본에서 포크만 하고 내 계정에서는 배포/수정만 해도 무방함
  • 나의 상황

    • Capstone2-Tranner/FE는 팀 프로젝트이고,
    • 개인 레포지토리로 옮긴 이유는 Vercel 무료 배포만을 위한 것이다.
      ➡️ 그렇다면 PR이 필요 없음

🌟 포크한 레포지토리를 최신 코드로 유지하는 방법

  • 나의 정확한 상황

    • 조직 레포지토리(Capstone2-Tranner/FE)가 진짜 개발 소스
    • 나는 개인 계정(hj7321)에 포크한 레포지토리를 가지고 있음
    • 하지만 실제 기능 개발은 조직 레포지토리에서 계속됨
    • 🚨 그럼 포크한 개인 레포지토리는 시간이 지나면 점점 구버전이 됨
  • 그렇다면 내 개인 포크 레포는 어떻게 계속 최신 상태로 유지할까?
    ➡️ 바로 여기서 필요한 게 upstream remote 설정이다.

    • upstream이 포크의 진짜 원본(=조직 레포)을 가리키는 별명(remote 이름)이다.
    • upstream remote 설정이란 Git에서 내 포크가 원래 복사해온 원본 레포와 연결되는 주소를 등록하는 것을 말한다.
    # 1. 내 포크 레포를 현재 폴더에 클론함 (처음 등록할 때 한 번만 입력하면 됨)
    git clone https://github.com/hj7321/FE.git .
    
    # 2. 원본 조직 레포를 upstream으로 등록함 (처음 등록할 때 한 번만 입력하면 됨)
    git remote add upstream https://github.com/Capstone2-Tranner/FE.git
    
    # 3. 조직 레포의 최신 내용을 가져옴
    git fetch upstream
    
    # 4. 내가 쓰는 브랜치(main)에 병합함
    git checkout main
    git merge upstream/main
    
    # 5. 최신 코드 Vercel에 반영함
    git push origin main

    이렇게 하면 포크한 레포도 최신 상태로 계속 유지할 수 있다.

    이름
    origin내 포크된 GitHub 레포 (hj7321/FE)
    upstream조직의 원본 레포 (Capstone2-Tranner/FE)
  • 내 워크플로우 요약

    • Capstone2-Tranner/FE : 원래 개발하던 조직 레포

      • 여기가 진짜 개발소스
      • 이곳에서 계속 개발, git push로 업데이트
    • hj7321/FE : 내 포크 레포

      • 이건 Vercel 무료 배포용으로 따로 유지
      • 조직에서 push된 최신 코드가 필요할 때 아래 명령어 차례대로 수행
        # 내 포크된 작업 디렉토리에서 아래만 반복
        git fetch upstream
        git checkout main
        git merge upstream/main
        git push origin main
  • 이 방식으로 배포해도 문제 없는 이유

    이유설명
    Vercel은 내 포크 레포만 바라봄Vercel은 그냥 GitHub의 특정 레포지토리 코드를 배포할 뿐이다.
    내가 최신 코드만 잘 가져오면 됨git fetch upstreamgit merge로 동기화만 해주면 OK!
    코드 동작은 같음포크라고 해서 코드 내용이나 동작이 달라지는 게 아님

🌟 원본 조직 레포를 upstream으로 등록한 후에, 터미널에서 명령어로 동기화

원본 조직 레포를 upstream으로 등록한 후에는 다음 작업을 반복하면 된다.

  1. 조직 레포에서 작업하고 push

    git push origin main

    ➡️ 조직 레포(Capstone2-Tranner/FE)에 최신 코드가 올라감

  2. 개인 레포(포크한 레포)에서 최신 코드 반영

    # 1. 조직 레포에서 최신 코드 가져오기
    git fetch upstream
    
    # 2. 내 로컬 main 브랜치로 병합하기
    git checkout main
    git merge upstream/main
    
    # 3. (옵션) Vercel 배포를 위해 내 포크 레포에도 푸시
    git push origin main

    ➡️ 위 명령어를 차례대로 입력하면 개인 레포가 최신화됨

0개의 댓글