Skip to main content

누적 끌어오기 요청 관리

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

참고

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

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

하위 계층 변경

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

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

    Shell
    gh stack down
    

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

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

    Shell
    git add .
    git commit -m "helpful-commit-message"
    
  3. 위의 분기를 다시 지정하여 변경 사항을 선택합니다.

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

    Shell
    gh stack push
    gh stack top
    

스택 재지정

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

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

    Shell
    gh stack rebase
    

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

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

    Shell
    gh stack push
    

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

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

참고

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

웹 사이트에서 재지 GitHub 정

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

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

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

참고

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

스택 구조 조정

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

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

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

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

    • x — 분기 및 해당 커밋 삭제
    • d — 분기를 아래의 분기로 접습니다.
    • u — 분기를 위의 분기로 접습니다.
    • i / I — 커서 아래 또는 위에 새 분기를 삽입합니다.
    • r — 분기 이름 바꾸기
    • Shift+ / Shift+ , 분기 순서를 다시 지정합니다.
    • z - 마지막으로 준비된 작업을 실행 취소합니다.
  3. 저장하여 스테이징된 변경 내용을 적용합니다. 저장할 때까지 아무것도 수정되지 않습니다.

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

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

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

    Shell
    gh stack submit
    

웹 사이트에서 제거 GitHub

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

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

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

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

병합 후 로컬 환경 동기화

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

Shell
gh stack sync --prune

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

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

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

서로 다른 스택 확인

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

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

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

다음 단계