누적 끌어오기 요청을 사용하여 큰 코드 변경 내용을 독립적으로 검토하고 병합할 수 있는 더 작은 종속 끌어오기 요청 체인으로 분할합니다.
스택은 동일한 리포지토리에 있는 일련의 끌어오기 요청으로, 각 끌어오기 요청이 아래 끌어오기 요청의 분기를 대상으로 하여 단일 분기(일반적으로 주 분기)에 배치되는 순서가 지정된 체인을 형성합니다. 하나의 큰 끌어오기 요청 대신 더 작은 끌어오기 요청 집합을 가져옵니다. 각 끌어오기 요청에는 고유한 포커스가 있는 diff가 있으므로 팀원은 각 계층을 독립적으로 검토하고 승인할 수 있습니다.
사전 요구 사항
- GitHub CLI (
gh) 2.90.0 이상 및 Git 2.20 이상gh auth login를 사용하여 GitHub CLI을(를) 인증합니다.
- GitHub 푸시할 수 있는 리포지토리입니다.
CLI 확장 설치
gh extension install github/gh-stack
gh extension install github/gh-stack
팁
AI 코딩 에이전트(예: GitHub Copilot)와 함께 stacked pull requests를 사용하려면 gh-stack 스킬을 설치하세요.
gh skill install github/gh-stack
gh skill install github/gh-stack
첫 번째 스택 만들기
-
스택을 초기화하려면 리포지토리로 이동하고 다음 명령을 실행합니다. 그러면 추적 항목과 첫 번째 브랜치가 만들어집니다.
Shell gh stack init
gh stack init첫 번째 브랜치의 이름을 지정하라는 메시지가 표시됩니다. 기본적으로 스택은 리포지토리의 기본 분기를 트렁크(예:
main)로 사용하지만, 스택은 모든 분기를 대상으로 할 수 있습니다. -
평소처럼 첫 번째 브랜치에서 작업합니다: 코드를 작성하고, 변경 사항을 스테이징하고, 커밋합니다.
# ... write code ... git add . git commit -m "helpful-commit-message" -
다음 논리 작업 단위에 대한 준비가 되면 스택의 맨 위에 새 분기를 추가합니다.
Shell gh stack add BRANCH-NAME # ... write code ... git add . git commit -m "Another-helpful-commit-message"
gh stack add BRANCH-NAME # ... write code ... git add . git commit -m "Another-helpful-commit-message" -
모든 브랜치를 원격으로 푸시합니다.
Shell gh stack push
gh stack push -
풀 리퀘스트를 만들고 GitHub에서 스택으로 연결합니다.
Shell gh stack submit
gh stack submit각 풀 리퀘스트는 올바른 기본 브랜치로 생성됩니다. 첫 번째 분기는
main를 대상으로 합니다. 그리고 다음 분기BRANCH-NAME는 첫 번째 분기를 대상으로 합니다. 검토자는 해당 계층에 대한 차이만 볼 수 있습니다. 풀 리퀘스트는 GitHub에서 스택으로 함께 자동 연결되며 순서를 확인하고 빠르게 탐색할 수 있습니다. -
스택을 보고 언제든지 전체 상태를 확인합니다.
Shell gh stack view
gh stack view이 명령은 모든 브랜치, 풀 리퀘스트 링크, 상태 및 각각에 대한 가장 최근 커밋을 표시합니다.
-
gh stack add -Am "MESSAGE"를 사용해 모든 변경 내용을 스테이징하고, 커밋하고, 한 단계에서 다음 브랜치를 만듭니다. 별도의git add또는git commit이 필요하지 않습니다. 현재 분기에 아직 커밋이 없으면 해당 분기에 커밋됩니다. 커밋이 이미 있으면 새 분기가 만들어집니다.# Commit lands on the current branch gh stack add -Am "Auth middleware" # Current branch already has commits, so this creates the next branch gh stack add -Am "API routes" -
준비가 되면 모든 항목을 푸시하고 풀 리퀘스트를 만듭니다.
Shell gh stack submit
gh stack submit