GitHub Stacked PRs

2 hours ago 1

(github.github.com/gh-stack)

  • 대규모 코드 변경을 작고 검토 가능한 PR 단위로 분할해 순차적으로 관리할 수 있게 하는 GitHub의 새로운 기능
  • 각 PR은 독립적으로 리뷰되며, 전체 스택은 한 번의 클릭으로 병합할 수 있음
  • GitHub UI와 gh stack CLI를 통해 스택 생성, 탐색, 리베이스, 병합을 지원하고, 스택 맵으로 계층 구조를 시각화함
  • AI 코딩 에이전트 통합을 통해 대규모 diff를 자동으로 스택 단위로 나누거나 스택 기반 개발을 수행할 수 있음
  • 대형 PR의 복잡성과 충돌 위험을 줄이고, 리뷰 효율성과 팀 개발 속도를 높이는 데 목적이 있음

주요 기능

  • 스택형 PR 관리

    • 여러 PR을 순서 있는 스택(stack) 형태로 구성해, 각 PR이 바로 아래 PR의 브랜치를 기반으로 함
    • 최종적으로 메인 브랜치에 도달하는 체인 구조를 형성
    • GitHub는 스택 전체를 인식해 스택 맵(stack map) 을 UI에 표시, 리뷰어가 각 계층을 쉽게 탐색 가능
    • 브랜치 보호 규칙은 최종 대상 브랜치에 적용되며, CI 테스트는 스택 내 모든 PR에 대해 실행됨
  • 간소화된 스택 관리

    • GitHub UI에서 스택 내 PR 간 이동, 각 계층의 상태 확인, 전체 스택에 대한 연쇄 리베이스(cascading rebase) 실행 가능
    • 한 번의 클릭으로 스택 전체를 병합하거나 일부만 병합 가능
    • 병합 후 남은 PR들은 자동으로 리베이스되어, 가장 아래의 미병합 PR이 기본 브랜치를 대상으로 조정됨
  • 강력한 CLI 지원

    • gh stack CLI를 통해 스택 생성, 리베이스, 브랜치 푸시, PR 생성, 계층 간 이동을 터미널에서 수행 가능
    • CLI 명령 예시
      • gh extension install github/gh-stack : 확장 설치
      • gh stack alias : 단축 명령어 설정
      • gs init <branch> : 첫 브랜치 생성
      • gs add <branch> : 새 계층 추가
      • gs push : 모든 브랜치 푸시
      • gs submit : 스택 전체 PR 생성
  • AI Agent 통합

    • npx skills add github/gh-stack 명령으로 AI 코딩 에이전트가 스택 작업을 수행하도록 학습 가능
    • 대규모 diff를 자동으로 스택 단위로 분리하거나, 처음부터 스택 기반 개발 진행 가능

스택형 PR의 필요성

  • 대형 PR은 검토 난이도 증가, 병합 지연, 충돌 위험을 초래
    • 리뷰어가 문맥을 잃고 피드백 품질이 저하되며, 팀 전체 속도가 느려짐
  • Stacked PRs는 이를 해결하기 위해 작고 집중된 PR 체인으로 분할
    • 각 PR은 독립적으로 검토 가능하며, 전체 변경은 순차적으로 누적됨

시작하기

Read Entire Article