# 누적 끌어오기 요청 관리

누적 끌어오기 요청을 재구성하고, 분기를 다시 지정하고, 를 사용하여 GitHub CLI하위 계층을 변경합니다.

> \[!NOTE] 이 기능은 공개 미리 보기로 제공되며 변경될 수 있습니다.

스택에서 반복할 때 하위 계층에서 변경하거나, 선형 기록을 유지하도록 다시 기반하거나, 분기를 재구성해야 하는 경우가 많습니다. 확장 GitHub CLI 은 `gh stack` 영향을 받는 모든 분기를 업데이트하는 연속 작업으로 이러한 작업을 처리합니다.
[누적 끌어오기 요청 CLI 명령](/ko/pull-requests/reference/stacked-prs-cli-commands)을(를) 참조하세요.

## 하위 계층 변경

최상위 계층에서 작업하고 스택에서 더 낮은 항목을 변경해야 하는 경우 현재 계층에서 작업하는 대신 해당 계층이 속한 분기를 변경하고 다시 기반으로 합니다.

1. 변경이 필요한 분기로 이동합니다.

   ```shell copy
   gh stack down
   ```

   를 사용하여 특정 분기 `gh stack checkout BRANCH-NAME`를 확인할 수도 있습니다.

2. 변경하고 커밋합니다.

   ```shell copy
   git add .
   git commit -m "helpful-commit-message"
   ```

3. 위의 분기를 다시 지정하여 변경 사항을 선택합니다.

   ```shell copy
   gh stack rebase --upstack
   ```

4. 업데이트된 분기를 푸시하고 작업 중인 위치로 돌아갑니다.

   ```shell copy
   gh stack push
   gh stack top
   ```

## 스택 재지정

스택을 병합하려면 먼저 분기 간에 선형 기록이 있어야 합니다. 실행 `gh stack rebase` 은 각 분기가 아래 `main`분기의 맨 위에 다시 기반되는 계단식 재베이스를 수행하므로 모든 분기는 모든 하위 계층에서 최신 변경 내용을 선택합니다.

1. 스택을 다시 작성합니다. 기본적으로 아래쪽에서 위쪽으로 모든 분기를 다시 지정합니다.

   ```shell copy
   gh stack rebase
   ```

   재베이스를 제한하려면 가장 낮은 계층에서 현재 분기까지 다시 베이스를 다시 지정하거나 `--upstack` 현재 분기에서 위쪽으로 다시베이스하는 데 사용합니다`--downstack`.

2. 업데이트된 분기를 푸시합니다.
   `--force-with-lease` 이렇게 하면 다시 기반이 지정된 분기를 안전하게 업데이트할 수 있습니다.

   ```shell copy
   gh stack push
   ```

재베이스에서 충돌이 발생하면 충돌 `gh stack rebase` 파일을 중지하고 나열합니다.

* 영향을 받는 파일의 표식을 확인하여 준비한 `git add`다음 실행 `gh stack rebase --continue`합니다.
* 다시 시작하려면 실행 `gh stack rebase --abort` 하여 모든 분기를 해당 프리베이스 상태로 복원합니다.

> \[!NOTE]
> 끌어오기 요청에서 서버 쪽 리베이스를 트리거할 수도 있지만 해당 커밋은 서명되지 않았습니다. 리포지토리에 서명된 커밋이 필요한 경우 커밋이 GitHub CLI 로컬 Git 커밋 서명 구성을 따르도록 다시 기반합니다.

### 웹 사이트에서 재지 GitHub 정

스택이 선형이 아닌 경우 병합 상자에 **스택 다시베이스** 단추가 나타납니다. 이 옵션을 선택하면 서버 쪽 연계 재베이스가 트리거됩니다.

1. 와 같은 `main`최신 트렁크 위에 전체 스택을 다시 설정합니다.
2. 스택의 맨 아래에서 위쪽으로 작업하여 기본 분기 위에 있는 모든 분할되지 않은 분기를 다시 지정합니다.
3. 다시 기반된 각 분기를 강제로 푸시하여 원격을 업데이트합니다.

다시베이스가 완료되면 모든 끌어오기 요청은 업데이트된 분기를 반영하고 CI 검사는 다시 트리거됩니다.

> \[!NOTE]
> 서버 쪽 리베이스에서 만든 커밋은 서명 **되지 않습니다** . 리포지토리에 서명된 커밋이 필요한 경우 커밋이 GitHub CLI`gh stack rebase` 로컬 Git 커밋 서명 구성을 따르도록 다시 기반한 다음 푸시합니다 `gh stack push`.

## 스택 구조 조정

스택의 컴퍼지션을 변경할 수 있습니다. 예를 들어 분기를 삭제하거나, 분기를 결합하거나, 분기를 삽입하거나, 순서를 변경하거나, 이름을 바꿔야 하는 경우 대화형 명령을 `gh stack modify`사용합니다.

실행 `gh stack modify`하기 전에 다음을 확인합니다.

* 활성 스택이 체크 아웃되었습니다.
* 작업 트리는 깨끗합니다.
* 재베이스가 진행 중이 아닙니다.
* 병합을 위해 대기 중인 끌어오기 요청이 없습니다.
* 커밋 기록은 선형입니다.

1. 터미널 UI 수정을 엽니다.

   ```shell copy
   gh stack modify
   ```

2. 분기를 선택하고 작업을 스테이징합니다. 순서 변경 및 구조적 변경 내용(놓기, 접기, 삽입, 이름 바꾸기)은 동일한 세션에서 혼합할 수 없습니다.

   * `x` — 분기 및 해당 커밋 삭제
   * `d` — 분기를 아래의 분기로 접습니다.
   * `u` — 분기를 위의 분기로 접습니다.
   * `i`
     /
     `I` — 커서 아래 또는 위에 새 분기를 삽입합니다.
   * `r` — 분기 이름 바꾸기
   * <kbd>Shift</kbd>+<kbd>↑</kbd> / <kbd>Shift</kbd>+<kbd>즉</kbd> , 분기 순서를 다시 지정합니다.
   * `z` - 마지막으로 준비된 작업을 실행 취소합니다.

3. 저장하여 스테이징된 변경 내용을 적용합니다. 저장할 때까지 아무것도 수정되지 않습니다.

<kbd>Ctrl/cmd</kbd>+<kbd>s를</kbd> 사용합니다.

적용하는 동안 충돌이 발생하면 해결한 후 실행하거나 실행 `gh stack modify --continue``gh stack modify --abort` 하여 사전 수정 상태를 복원합니다.

1. 업데이트된 분기를 푸시하고 에 스택을 다시 만듭니다 GitHub.

   ```shell copy
   gh stack submit
   ```

## 웹 사이트에서 제거 GitHub

웹 사이트에서 스택을 디졸브하려면(예: 순서를 변경하거나 다시 구성하려면) 스택에서 **스택 제거** 옵션을 사용합니다.

스택을 제거하면 스택에서 **열기, 초안 및 닫힌** 끌어오기 요청이 제거됩니다. 각각은 현재 기본 분기를 유지하지만 더 이상 다른 분기와 연결되지 않으며 스택 맵 및 스택 병합 요구 사항이 사라집니다.

**병합된 끌어오기 요청과 대기 중인 끌어오기 요청은 스택에 유지됩니다.** 끌어오기 요청이 병합되거나 병합을 위해 큐에 대기되면 스택의 일부로 스택을 제거할 수 없습니다. 스택은 끌어오기 요청이 병합되지 않거나 병합을 위해 대기 중인 경우에만 완전히 용해됩니다. 그렇지 않으면 끌어오기 요청이 계속 유지됩니다.

스택을 디졸브하지 않고 순서를 다시 지정하거나 재구성하려면 대신 명령을 사용합니다 `gh stack modify` .
[스택 재구성을 참조하세요](#restructuring-a-stack).

## 병합 후 로컬 환경 동기화

스택 맨 아래에 있는 끌어오기 요청이 병합되면 단일 동기화 명령으로 로컬 상태를 업데이트합니다. 병합된 끌어오기 요청에 대한 로컬 분기를 동시에 자동으로 정리하려면 이 옵션을 추가합니다 `--prune` .

```shell copy
gh stack sync --prune
```

이렇게 하면 최신 변경 내용을 가져오고, 트렁크를 빠르게 전달하고, 나머지 분기를 다시 기반으로 하고, 업데이트된 분기를 푸시하고, 끌어오기 요청 상태를 GitHub동기화합니다.

### 스택에 추가된 끌어오기 요청 끌어오기 GitHub

다른 사용자가 스택에 끌어오기 요청을 추가하는 경우 새 분기를 가져와서 로컬 스택에 GitHub`gh stack sync` 추가하여 원격을 미러링합니다. 이와 같은 클린 원격 업데이트는 자동으로 아래로 당겨지므로 `gh stack sync` 자동화에서 실행해도 안전합니다.

### 서로 다른 스택 확인

예를 들어 다른 끌어오기 요청이 동일한 스택에 추가되는 동안 로컬로 분기를 추가하는 경우와 같이 둘 다 다른 항목의 클린 확장이 아닌 경우 로컬 및 원격 스택 GitHub이 서로 다릅니다. 이 경우 `gh stack sync` 두 가지를 자동으로 병합할 수 없습니다. 대화형 터미널에서는 다음 세 가지 선택 항목을 제공합니다.

* **원격 스택을 진실의 근원으로 사용합니다.** 누락된 분기를 끌어와 로컬 스택 컴퍼지션을 원격으로 바꿉니다. 원격 스택에 더 이상 포함되지 않는 분기에 있는 경우 가장 가까운 생존 분기로 이동됩니다. 이렇게 하려면 커밋되지 않은 변경 내용이 없는 깨끗한 작업 트리가 필요합니다.
* **에서 스택을 삭제합니다 GitHub.** 스택 개체 GitHub 를 삭제하고 동기화를 중지합니다. 끌어오기 요청 및 로컬 분기는 그대로 유지됩니다. 아직 제출하지 않은 분기에 대한 끌어오기 요청도 만드는 스택 `gh stack submit`을 다시 만듭니다. 구조를 변경하려면 먼저 실행 `gh stack modify` 합니다.
* **취소.** 분기를 푸시하거나 끌어오기 요청을 업데이트하지 않고 동기화를 중단합니다.

CI와 같은 비대화형 터미널에서는 분기를 푸시하거나 끌어오기 요청을 업데이트하지 않고 동기화를 중단합니다. 스택을 제거하고 다시 만들어 해결합니다.

## 다음 단계

* [누적 끌어오기 요청 검토](/ko/pull-requests/how-tos/review-pull-requests/reviewing-stacked-pull-requests)
* [누적 끌어오기 요청 병합](/ko/pull-requests/how-tos/merge-and-close-pull-requests/merging-stacked-pull-requests)