Skip to main content

누적 끌어오기 요청

누적 끌어오기 요청이 작동하는 GitHub방법에 대한 규칙 및 요구 사항입니다.

참고

이 기능은 공개 미리 보기로 제공되며 변경될 수 있습니다.

스택은 동일한 리포지토리에 있는 일련의 끌어오기 요청으로, 각 끌어오기 요청이 아래 끌어오기 요청의 분기를 대상으로 하여 단일 분기(일반적으로 주 분기)에 배치되는 순서가 지정된 체인을 형성합니다. 하나의 큰 끌어오기 요청 대신 더 작은 끌어오기 요청 집합을 가져옵니다. 각 끌어오기 요청에는 고유한 포커스가 있는 diff가 있으므로 팀원은 각 계층을 독립적으로 검토하고 승인할 수 있습니다.

스택의 모든 끌어오기 요청은 스택 의 기본 규칙(일반적으로 main 직접 대상으로 하는 분기)에 관계없이 평가됩니다. 즉, 중간 스택 끌어오기 요청은 아래쪽 끌어오기 요청과 동일한 표준으로 유지됩니다.

참고

  • 누적 끌어오기 요청은 모든 분기가 동일한 리포지토리에 있어야 합니다. 포크 간 스택은 지원되지 않습니다.
  • 누적 끌어오기 요청은 .에서 GitHub Desktop지원되지 않습니다.

누적 끌어오기 요청 가용성

확장은 gh stackGitHub CLI 로컬 개발 워크플로를 처리합니다. 올바른 종속성 순서로 분기를 만들고 추적하고, 분기를 다시 기반으로 유지하고, 분기를 푸시하고, 끌어오기 요청을 만들고 연결하며, 레이어 간을 탐색합니다.

GitHub CLI 가 필요하지 않습니다. 기본 Git 작업은 표준이며 대신 웹 사이트에서 스택을 GitHub 만들 수 있습니다.

Jujutsu 또는 Sapling과 같은 다른 도구를 사용하여 로컬 분기를 관리하고 푸시하는 경우 계속 사용 GitHub CLI 하거나 GitHub 웹 사이트에서 해당 분기에서 끌어오기 요청 스택을 열 수 있습니다. 누적 끌어오기 요청과 함께 다른 도구 사용을(를) 참조하세요.

누적 끌어오기 요청에 대한 트렁크

스택의 트렁크는 아래쪽 끌어오기 요청의 기본 분기입니다. 스택의 다른 모든 끌어오기 요청은 그 위에 빌드됩니다. 트렁크는 기본적으로 리포지토리의 기본 분기(예: main)로 설정되지만 릴리스 분기 또는 수명이 긴 기능 분기와 같은 모든 분기일 수 있습니다.

트렁크를 설정하려면:

  • 보낸 사람 GitHub CLI--base BRANCH 이 옵션을 gh stack init 명령에 전달합니다(예: gh stack init --base release auth-layer).
  • GitHub 웹 사이트에서 트렁크로 원하는 분기에 대해 아래쪽 끌어오기 요청을 만듭니다. 스택의 나머지 부분 위에 빌드됩니다.

분기 보호 규칙, 필수 검사 및 CI는 기본 분기뿐만 아니라 스택 대상의 트렁크에 대해 모두 평가됩니다.

분기 보호 및 필수 검사

다음은 각 끌어오기 요청이 바로 아래에 있는 분기가 아니라 스택 베이스를 대상으로 하는 것처럼 평가됩니다.

규칙평가 방법
필수 검토스택 베이스에 대해 평가됩니다.
필수 상태 확인스택 베이스에 대해 평가됩니다.
CODEOWNERS (코드 소유자)스택 베이스에서 평가됩니다.
CODEOWNERS 낮은 끌어오기 요청에서 변경되지만 위의 끌어오기 요청에는 영향을 주지 않습니다.
코드 검사 워크플로스택 베이스에 대해 평가됩니다.

GitHub Actions

GitHub 작업 워크플로는 스택의 각 끌어오기 요청이 스택의 베이스를 대상으로 하는 것처럼 트리거됩니다. 스택의 모든 끌어오기 요청에 대해 pull_request 실행되는 이벤트를 대상으로 main 하여 실행되도록 구성된 워크플로는 아래쪽 요청뿐만 아니라 워크플로 변경이 필요하지 않습니다.

스택의 기본 분기와 같은 스택 메타데이터는 워크플로 식 github.event.pull_request.stack에서 사용할 수 있습니다. 이 속성은 끌어오기 요청이 스택에 속하는 경우에만 존재합니다.

중복 CI 사용을 줄이기 위한 메타데이터 필드 및 패턴의 전체 집합은 누적 끌어오기 요청에 대한 CI 최적화을 참조하세요.

병합 요구 사항

스택의 끌어오기 요청이 병합되기 전에 다음을 모두 true여야 합니다.

  • 끌어오기 요청은 필요한 검토, 필수 상태 검사 및 CODEOWNER 승인을 포함하여 스택 기반의 모든 분기 보호 요구 사항을 충족합니다.
  • 스택 아래의 모든 끌어오기 요청도 이러한 요구 사항을 충족합니다.
  • 스택에는 분기 간에 완전한 선형 기록이 있습니다.

예를 들어 스택 main ← PR1 ← PR2 ← PR3에서 PR #3을 병합하려면 PR #1 및 PR #2도 검사를 통과하고, 필요한 검토를 수행하고, 모든 분기 보호 규칙을 충족해야 합니다.

병합 메서드

스택은 세 가지 병합 메서드를 모두 지원합니다. 각 경우에 끌어오기 요청은 단일 원자성 작업으로 토지를 요청합니다.

  • 병합 커밋 은 병합되는 끌어오기 요청의 전체 그룹에 대해 하나의 병합 커밋을 만들어 각 끌어오기 요청의 전체 커밋 기록을 유지합니다.
  • Squash 는 끌어오기 요청당 하나의 깨끗하고 찌그러진 커밋을 만듭니다. 끌어오기 요청을 병합하면 n 기본 분기에 스쿼시된 커밋이 만들어집니다 n .
  • Rebase 는 각 끌어오기 요청의 커밋을 기본 분기로 재생하여 병합 커밋 없이 선형 기록을 만듭니다.

병합 큐를 통해 병합

스택은 병합 큐를 완벽하게 지원합니다. 스택의 모든 끌어오기 요청은 올바른 순서로 큐에 추가됩니다. 끌어오기 요청이 큐에서 제거되거나 제거되면 스택의 끌어오기 요청도 모두 제거됩니다.

참고

스택을 함께 유지하기 위해 병합 큐를 사용하면 병합 그룹이 구성된 최대 크기를 최대 50%까지 초과할 수 있습니다. 스택이 너무 커서 해당 버퍼 내에 맞지 않으면 연속된 병합 그룹에 자동으로 분할됩니다.

선형 기록

스택의 모든 분기 간에 완전한 선형 기록은 병합에 대한 엄격한 요구 사항입니다. 변경 내용이 하위 분기로 푸시되거나 트렁크가 앞으로 이동할 때 스택의 선형 기록이 손실될 수 있습니다.

선형 기록을 복원하려면 연속 재베이스를 실행합니다.

  • CLI에서 다음을 실행 gh stack rebase한 다음 푸시합니다 gh stack push.
  • 웹 사이트에서 병합 상자에서 GitHub****다시베이스 스택을 클릭하여 서버 쪽 계단식 재베이스를 트리거합니다.

지침은 누적 끌어오기 요청 관리을(를) 참조하세요.

추가 읽기