# 끌어오기 요청에 AI 생성 코드 스택

신속하게 검토할 수 있는 작은 종속 끌어오기 요청 스택을 만듭니다.

> \[!NOTE]
> 누적 끌어오기 요청이 있으며 공개 미리 보기 변경될 수 있습니다.

대규모 끌어오기 요청은 특히 AI가 짧은 시간에 대량의 코드를 생성하는 데 도움이 되는 경우 병목 상태를 검토하고 만들기가 어렵습니다. 끌어오기 요청 크기가 증가함에 따라 검토 품질도 저하됩니다. 검토자는 결과를 건너 떼거나, 문제를 누락하거나, 미루고, 부실해지고 병합 충돌이 발생할 때까지 끌어오기 요청을 그대로 둘 수 있습니다.

누적 끌어오기 요청은 큰 코드 변경 내용을 검토할 수 있도록 유지합니다.

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

이 자습서에서는 에이전트와 함께 누적 끌어오기 요청을 사용하여 개별적으로 검토 가능한 계층에서 기능을 빌드하는 방법을 안내합니다. 이 예제에서는 앱에 사용자 인증을 추가하는 방법을 살펴보겠습니다. 우리는 사용하고 에이전트 기술을 사용합니다 GitHub Copilot 명령 줄 인터페이스 (CLI)`gh-stack` .

## 사전 요구 사항

에이전트와 함께 기술을 `gh-stack` 사용하려면 먼저 CLI 확장을 설치 GitHub CLI`gh-stack` 해야 합니다. 다음 항목이 필요합니다.

* GitHub CLI (`gh`) 2.90.0 이상 및 Git 2.20 이상
  * 를 사용하여 인증 GitHub CLI 합니다 `gh auth login`.
* GitHub 푸시할 수 있는 리포지토리입니다.
* GitHub Copilot 명령 줄 인터페이스 (CLI) 설치되고 로그인되었습니다.

에서 GitHub CLI확장 및 기술을 설치 `gh-stack` 합니다.

```shell
gh extension install github/gh-stack
gh skill install github/gh-stack
```

> \[!NOTE]
> 이 자습서 전체에서 스택 명령을 직접 실행하는 대신 Copilot 실행하려는 경우 사용해야 GitHub CLI합니다.

## 1. 코드를 생성하기 전에 스택 디자인

좋은 스택은 집을 짓고, 강한 기초로 시작하고, 벽을 프레임하고, 배선을 설치한 다음, 건식 벽체를 완성하는 것과 같습니다. 각 계층은 아래 계층에 따라 달라집니다. 결국 검토자는 아래에서 위로 끌어오기 요청을 읽고 함께 제공되는 기능을 따를 수 있어야 합니다.

* 기능을 레이어로 분할합니다. 각 계층은 자체적으로 검토할 수 있는 일관된 단일 변경이어야 합니다.
  * 끌어오기 요청이 빠르게 읽을 수 있을 만큼 각 계층을 작게 유지합니다. 레이어를 검토하기 위해 긴 설명이 필요한 것처럼 느껴지면 너무 클 수 있습니다.
  * 경계를 직접 결정하거나 계획에서 작업 Copilot 합니다. 어느 쪽이든 스택의 모양을 소유합니다.
* 종속성별로 레이어를 정렬합니다. 기본 변경 내용은 맨 아래에 있습니다. 그들에 의존하는 모든 것은 더 높아집니다. 인증의 경우 다음과 같습니다.
  * 계층 1: 데이터 모델 및 마이그레이션
  * 계층 2: CRUD 엔드포인트
  * 계층 3: JWT 미들웨어 및 가드
  * 계층 4: 통합 및 단위 테스트

### 예시 프롬프트

* `Propose a layered approach to add user authentication to this app. Order the layers by dependency, keeping each layer independently reviewable.`
* `Review my planned layers and flag any that are too large or that depend on a branch above them.`

## 2. 맨 아래 계층을 먼저 빌드합니다.

기초를 사용하여 스택을 시작합니다. 위의 모든 항목은 이 계층을 올바르게 가져오는 데 따라 달라집니다.

* Copilot 누적 끌어오기 요청을 빌드하고 계획에 따라 첫 번째 계층을 빌드하도록 요청합니다. 에이전트는 이 `gh-stack` 기술을 사용하여 스택의 첫 번째 분기를 만듭니다.
* 스택을 직접 만들려면 접두사를 사용하여 직접 `gh stack init`만듭니다. 예를 들어 `gh stack init BRANCH-NAME-1`분기 이름을 깔끔하게 유지합니다.
* 계속 진행하기 전에 생성된 변경 사항을 직접 검토합니다. 아래쪽 계층의 실수가 위의 모든 분기에 전파되므로 계속 진행하기 전에 검토를 제공합니다.

### 예시 프롬프트

* `Start the pr-stack and build only the first layer: the user data model and migration.`
* `Conduct a review of the generated code and confirm this branch contains only the data model and migration, and nothing that belongs in a later layer.`

## 3. 각 새 코드 계층을 위에 쌓습니다.

기초가 적용된 상태에서 기능의 나머지 부분을 한 번에 한 계층씩 빌드합니다.

* 다음 계층을 추가하고 아래 계층의 컨텍스트에서 구현하도록 요청 Copilot 합니다. 에이전트는 스택의 맨 위에 분기를 추가하고 그곳에서 작업을 커밋합니다.
* 분기를 직접 추가하려면 .를 사용합니다 `gh stack add BRANCH-NAME-NEXT`.
* 레이어가 너무 커지게 되면 계획 외부로 드리프트되었는지 아니면 실제로 레이어가 아닌 두 개의 레이어가 필요한지 고려합니다.
* 진행하면서 각 계층에 대해 새 분기를 만들면 모든 분기가 깨끗하고 자체 포함된 차이로 유지됩니다.
* 끌어오기 요청을 만들 준비가 되면 스택을 제출하도록 요청 Copilot 하거나 직접 수행하려면 다음을 사용합니다 `gh stack submit`.
* 각 끌어오기 요청이 자체적으로 대기하도록 허용합니다. 포커스가 있는 제목과 레이어에 대한 간결하고 의미 있는 설명만으로도 충분합니다.

### 예시 프롬프트

* `Add the next layer in a new branch on top: the CRUD endpoints that use the user model from the branch below.`
* `This branch is getting large. Suggest how it could be split into two independently reviewable layers.`

## 4. 검토를 요청하기 전에 끌어오기 요청을 직접 검토합니다.

각 레이어는 작기 때문에 자체 검토도 더 쉬워집니다. 팀원이 참여하기 전에 모든 지점에서 패스를 수행합니다. 검토자는 이미 신뢰하는 변경 내용을 받아야 합니다.

* 각 분기에서 테스트, linter 및 코드 검사를 실행합니다. 검토를 요청하기 전에 각 계층을 표준과 비교할 수 있도록 도와주세요 Copilot .
* AI에서 생성된 변경 내용을 철저히 검토하는 방법은 [AI 생성 코드 검토](/ko/enterprise-cloud@latest/copilot/tutorials/review-ai-generated-code)을 참조하세요.

## 5. 맨 아래에서 시작하여 스택에 대한 검토 요청

레이어가 빌드되면 검토자는 큰 코드 벽 대신 작은 차이도 얻습니다.

* 종속성이 강력하게 통합된 경우 스택의 맨 아래에서 시작하여 검토를 요청하여 후속 검토 전에 변경 내용을 스택에 통합할 수 있습니다.
* 서로 다른 계층에 대해 별도의 사용자로부터 검토가 필요한 경우 검토자는 병렬로 작업할 수 있습니다. 한 사람은 데이터 모델을 검토할 수 있고 다른 사용자는 엔드포인트를 검토하며 전체 기능을 검토하지도 않습니다.

## 6. 피드백 반복

피드백은 전체 기능이 아닌 레이어에 개별적으로 적용됩니다. 스택을 사용하면 올바른 계층을 제자리에 고정하고 변경 사항을 위쪽으로 전달할 수 있습니다.

* 검토자가 플래그가 지정된 계층을 수정하도록 요청 Copilot 합니다. 에이전트가 오른쪽 분기로 이동하여 변경한 후 커밋합니다. 그런 다음 위의 레이어를 다시 지정하여 수정 사항을 선택합니다.
* 각 수정 사항은 속한 계층에 유지합니다. 잘못된 분기에서 변경한 내용은 혼동을 일으키고 오류 업스택을 만들 수 있습니다.
* 수정할 때 위의 분기를 다시 기반으로 하고 변경 내용을 전파하도록 요청 Copilot 합니다.
* 스택을 직접 이동하려는 경우 , `gh stack up`또는 `gh stack checkout BRANCH-NAME`.를 사용하여 분기를 `gh stack down`탐색합니다. 그런 다음 변경 내용을 커밋하고 실행 `gh stack rebase --upstack` 하여 변경 내용을 스택 위로 이동합니다.

### 예시 프롬프트

* `A reviewer flagged that the auth service doesn't handle expired tokens. Fix that on BRANCH-NAME and test the changes.`
* `I've rebased the layers above onto this fix. Check that the branch with endpoints still works with the change and flag anything that needs updating.`

## 7. 아래쪽 계층에서 병합

스택은 기본 분기를 가리키는 계층에서 시작하여 순서대로 병합됩니다. 레이어를 한꺼번에 병합하거나 하나씩 병합하고 GitHub 자동으로 다음 계층을 대상으로 다시 지정하여 주 레이어를 가리킵니다.

* 스택을 맨 아래에서 위로 또는 스택의 어느 곳에서나 한 번에 하나씩 병합하고 병합하는 끌어오기 요청 아래의 모든 분기는 아래쪽에서 위로 병합됩니다.
* 각 레이어의 diff는 부모에 대해 정확히 동일하게 유지되며 기본 변경 내용만 유지되므로 진행 중인 작업이나 검토에 영향을 주지 않고 한 번에 레이어를 쉽게 병합할 수 있습니다.
* 자동 병합 또는 병합 큐를 사용하면 각 계층이 승인되고 검사가 통과되는 즉시 병합됩니다. 전체 스택에서 한 번에 기다릴 필요가 없습니다.

최상위 계층이 병합되면 전체 기능이 착륙합니다. 모든 조각은 하나의 큰 끌어오기 요청보다는 작고 의도적인 변화로 더 효과적으로 검토되었습니다.

## 추가 읽기

* [AI 생성 코드 검토](/ko/enterprise-cloud@latest/copilot/tutorials/review-ai-generated-code)
* [누적 끌어오기 요청 관리](/ko/enterprise-cloud@latest/pull-requests/how-tos/create-pull-requests/managing-stacked-pull-requests)