프로젝트 소개

gh stack은 스택 브랜치와 풀 리퀘스트를 관리하는 GitHub CLI 확장입니다. 스택 PR은 큰 변경을 서로 위에 쌓이는 검토 가능한 작은 풀 리퀘스트 체인으로 나누며, 이 도구는 브랜치 생성, 브랜치 리베이스 유지, 올바른 PR 베이스 브랜치 설정, 계층 간 탐색을 자동화합니다. 설치는 `gh extension install github/gh-stack`으로 하며 GitHub CLI v2.0 이상이 필요합니다. AI 코딩 에이전트를 위한 선택적 스킬을 설치할 수 있습니다. 핵심 모델: 스택은 순서가 있는 브랜치 목록이며, 각 브랜치는 아래 브랜치를 기반으로 하고 맨 아래 브랜치는 트렁크 브랜치(일반적으로 main)를 기반으로 합니다. 스택 메타데이터는 `.git/gh-stack`에 JSON으로 로컬 저장되며, 리베이스 상태는 별도 파일에 저장됩니다. 명령어는 다음과 같습니다: - init: 스택을 초기화하며, 선택적으로 기존 브랜치를 채택하고 트렁크를 설정할 수 있습니다. - add: 스택 위에 새 브랜치를 만들며, 변경 사항을 스테이징하고 커밋하는 옵션이 있습니다. - checkout: 스택 번호, PR 번호, PR URL 또는 브랜치 이름으로 스택을 체크아웃하며, 로컬 및 원격 스택을 위한 대화형 선택기를 포함합니다. - rebase: 스택 전체에 걸쳐 페치 및 캐스케이딩 리베이스를 수행하며, downstack/upstack/no-trunk 범위 지정과 continue/abort 처리를 지원합니다. - modify: 브랜치를 drop, fold, insert, rename, reorder하는 대화형 터미널 UI입니다. - sync: 페치, 원격 스택 조정, 트렁크 fast-forward, 캐스케이딩 리베이스, 푸시, PR 상태 동기화, 스택 연결, 선택적 병합된 브랜치 정리를 수행합니다. - push: 브랜치별 force-with-lease 검사를 통해 활성 브랜치를 푸시합니다. - submit: 브랜치를 푸시하고 PR과 GitHub 스택을 생성하거나 업데이트하며, 대화형 편집기 또는 자동 모드를 지원합니다. - link: 로컬 추적 없이 브랜치 이름이나 PR 번호로 GitHub 스택을 생성하거나 업데이트하며, 다른 로컬 브랜치 도구와 함께 사용할 때 유용합니다. - merge: 하나 이상의 스택 PR을 전부 아니면 전무 방식으로 병합하며, 병합 방법 옵션과 병합 큐 인식을 지원합니다. - view: 스택 브랜치, 순서, PR 링크, 최근 커밋을 표시하며, 짧은 출력과 JSON 출력을 지원합니다. - unstack/delete: 로컬 추적 및/또는 GitHub에서 스택을 제거합니다. - 탐색 명령어(up, down, top, bottom)는 현재 스택 내 브랜치 간을 이동합니다. README에는 플래그, 예제, 사전 조건, 그리고 분기 처리 및 병합 큐 상호작용과 같은 동작이 자세히 문서화되어 있습니다.