gh

GitHub CLI. GitHub 작업을 터미널에서 issue, PR, repo, Actions, API 호출까지 묶어서 처리한다.

  • 최상위 진입점은 gh [command] [subcommand] [flags] 이다.
  • 인증 후 repo, pr, issue, release, run, workflow, api 계열을 일관된 문법으로 사용할 수 있다.
  • 자동화에서는 interactive login 대신 GH_TOKEN 또는 GITHUB_TOKEN 환경 변수를 우선 사용하는 편이 안전하다.
  • 현재 공식 매뉴얼에는 agent-taskskill 같은 신규 command group도 포함되어 있다.
brew install gh

업데이트:

brew upgrade gh
winget install --id GitHub.cli --source winget

업데이트:

winget upgrade --id GitHub.cli --source winget

설치 프로그램이 PATH 를 변경하므로 Windows Terminal은 새 탭이 아니라 새 창으로 다시 열어야 한다.

GitHub CLI maintainers가 관리하는 공식 APT repository를 등록한 뒤 설치한다.

(type -p wget >/dev/null || (sudo apt update && sudo apt install wget -y)) \
  && sudo mkdir -p -m 755 /etc/apt/keyrings \
  && out=$(mktemp) \
  && wget -nv -O "$out" https://cli.github.com/packages/githubcli-archive-keyring.gpg \
  && cat "$out" | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg >/dev/null \
  && sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
  && sudo mkdir -p -m 755 /etc/apt/sources.list.d \
  && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" \
     | sudo tee /etc/apt/sources.list.d/github-cli.list >/dev/null \
  && sudo apt update \
  && sudo apt install gh -y

업데이트:

sudo apt update
sudo apt install gh

GitHub CLI의 공식 RPM repository는 Red Hat Enterprise Linux, CentOS, Fedora를 지원한다. 먼저 시스템이 DNF5인지 DNF4인지 확인하고 해당 명령만 사용한다.

DNF5

sudo dnf install dnf5-plugins
sudo dnf config-manager addrepo --from-repofile=https://cli.github.com/packages/rpm/gh-cli.repo
sudo dnf install gh

DNF4

sudo dnf install 'dnf-command(config-manager)'
sudo dnf config-manager --add-repo https://cli.github.com/packages/rpm/gh-cli.repo
sudo dnf install gh

업데이트:

sudo dnf update gh
공식 Linux package와 repository metadata는 GitHub CLI signing key로 서명된다. 설치 중 key import 확인이 표시될 수 있으므로 공식 Linux 설치 문서의 최신 fingerprint와 대조한다. GitHub CLI team은 Snap 설치 방식을 권장하지 않는다.
gh --version
gh auth login
gh auth status
gh [command] [subcommand] [flags]
  • gh COMMAND [SUBCOMMAND] [FLAGS]
  • gh auth login [flags]
  • gh repo clone <repository> [directory] [– <gitflags>…]
  • gh repo create [name] [flags]
  • gh pr checkout [number|url|branch] [flags]
  • gh pr create [flags]
  • gh api <endpoint> [flags]
  • –version: 현재 gh 버전 출력
  • gh auth: GitHub host 인증, token 상태, git credential 연동
  • gh repo: 저장소 생성, clone, view, fork, sync
  • gh pr: PR 생성, 조회, checkout, merge, review
  • gh issue: 이슈 생성, 목록, 조회, 코멘트, 상태 변경
  • gh release: release 생성, asset 업로드, 다운로드
  • gh run: GitHub Actions run 조회, watch, rerun, download
  • gh workflow: Actions workflow 목록, 실행, enable, disable
  • gh api: REST/GraphQL API 직접 호출
  • gh browse: 현재 repo 또는 지정 대상 웹 열기
  • gh search: repos, issues, prs, code 검색
  • gh auth login
    • –web: 브라우저 기반 인증
    • –with-token: stdin 으로 token 읽기
    • –hostname HOST: GitHub Enterprise Server host 지정
    • –git-protocol ssh|https: git transport 선택
    • –skip-ssh-key: SSH key 생성/업로드 prompt 건너뛰기
  • gh repo clone
    • –no-upstream: fork clone 시 upstream remote 추가 안 함
    • –upstream-remote-name NAME: 기본 upstream remote 이름 변경
  • gh repo create
    • –public, –private, –internal: visibility 지정
    • –clone: 생성 직후 로컬 clone
    • –source DIR: 기존 로컬 repo를 source 로 사용
    • –push: 기존 local commit/refs push
  • gh pr checkout
    • –branch NAME: 로컬 브랜치 이름 지정
    • –detach: detached HEAD 로 checkout
    • –force: 기존 로컬 브랜치를 PR 최신 상태로 재설정
    • –recurse-submodules: checkout 후 submodule update
  • gh pr create
    • –base BRANCH: 대상 base branch 지정
    • –head USER:BRANCH: head repo/branch 명시
    • –fill, –fill-first, –fill-verbose: commit 정보에서 title/body 채우기
    • –draft: Draft PR 생성
    • –web: 브라우저에서 PR 생성 페이지 열기
  • gh api
    • –method GET|POST|PUT|PATCH|DELETE: HTTP method 지정
    • –hostname HOST: 대상 GitHub host 지정
    • –field key=value, –raw-field key=value: 요청 파라미터 추가
    • –input FILE: request body 파일 또는 stdin
    • –jq EXPR: jq 문법으로 필드 추출
    • –template STRING: Go template 출력 포맷
    • –paginate: 모든 페이지 순차 호출
    • –preview NAME: preview API opt-in
    • –cache DURATION: 응답 캐시
자동화에서는 gh auth login 대신 GH_TOKEN 또는 GITHUB_TOKEN 을 사용하는 편이 안전하다. shell history에 token이 남을 수 있는 echo TOKEN | gh auth login –with-token 형태는 피하고, 파일 redirect 또는 CI secret env를 우선 사용한다.
# 대화형 로그인
gh auth login
 
# 브라우저 기반 로그인
gh auth login --web --clipboard
 
# 파일에서 token 읽어 로그인
gh auth login --with-token < mytoken.txt
 
# GitHub Actions에서 gh 사용
export GH_TOKEN="$GITHUB_TOKEN"
gh auth status
# 특정 org의 저장소 clone
gh repo clone cli/cli
 
# fork clone 후 upstream remote 생략
gh repo clone myfork --no-upstream
 
# 새 public 저장소 생성 후 바로 clone
gh repo create my-project --public --clone
 
# 현재 디렉터리를 source로 사용해 private 저장소 생성
gh repo create my-project --private --source=. --push
# 최근 PR 중에서 선택하여 checkout
gh pr checkout
 
# 특정 PR checkout
gh pr checkout 32
 
# URL로 PR checkout
gh pr checkout https://github.com/OWNER/REPO/pull/32
 
# title/body를 지정해 PR 생성
gh pr create --title "Fix login race" --body "Serialize refresh token writes"
 
# commit message를 기반으로 draft PR 생성
gh pr create --fill --draft
 
# 브라우저에서 PR 작성 페이지 열기
gh pr create --web
# 현재 저장소 release 목록
gh api repos/{owner}/{repo}/releases
 
# issue title만 추출
gh api repos/{owner}/{repo}/issues --jq '.[].title'
 
# GraphQL paginate
gh api graphql --paginate -f query='
  query($endCursor: String) {
    viewer {
      repositories(first: 100, after: $endCursor) {
        nodes { name }
        pageInfo { hasNextPage endCursor }
      }
    }
  }'
  • GH_TOKEN, GITHUB_TOKEN: 인증 token. headless/CI 환경에서 우선 사용
  • GH_HOST: 기본 GitHub host 지정. GitHub Enterprise Server 작업 시 유용
  • GH_REPO: 기본 대상 저장소를 [HOST/]OWNER/REPO 형식으로 지정
  • GH_EDITOR, GIT_EDITOR, VISUAL, EDITOR: 편집기 우선순위
  • GH_BROWSER, BROWSER: 링크 열기용 브라우저
  • GH_PAGER, PAGER: 출력 pager
  • GLAMOUR_STYLE: Markdown 렌더링 스타일
  • NO_COLOR, CLICOLOR, CLICOLOR_FORCE: ANSI color 제어
  • GH_CONFIG_DIR: gh 설정 파일 저장 디렉터리
  • GH_PROMPT_DISABLED: interactive prompt 비활성화

gh --help

  • gh: command not found: GitHub CLI가 설치되지 않은 환경이다. 패키지 매니저 또는 공식 release로 설치 후 다시 확인
  • 인증은 되었는데 권한 오류가 난다: PAT scope 또는 fine-grained token 권한 범위를 재확인. automation이라면 GH_TOKEN 값과 대상 repo 권한 확인
  • gh repo clone 이 기대와 다른 protocol을 쓴다: gh config get git_protocol 로 현재 설정 확인 후 gh auth login –git-protocol ssh 또는 https 로 조정
  • gh api 호출이 POST로 바뀐다: –field 또는 –raw-field 추가 시 기본 method가 POST로 전환될 수 있으므로 필요하면 –method GET 명시
  • GitHub Enterprise Server 대상이 잘못 간다: –hostname 또는 GH_HOST 설정 확인
  • 로컬 이 작업 환경에서는 gh 실행 파일이 없어 live help를 직접 캡처하지 못했다.
  • 이 페이지는 2026-06-29 기준 GitHub CLI 공식 manual 구조를 기준으로 작성했다.
  • 공식 manual에는 비교적 최근 command group인 agent-taskskill 이 포함되어 있다. 구버전 gh 에서는 보이지 않을 수 있다.
  • codex:: 2026-07-19 Added official installation and update instructions for macOS, Windows, Debian/Ubuntu, and RHEL/CentOS/Fedora.
  • codex:: 2026-06-29 Added the gh command page with auth, repo, PR, API, and environment variable guidance from the official manual.
  • /home/u613600155/domains/cli.zerotymer.net/public_html/data/pages/gh/ko.txt
  • 마지막으로 수정됨: 2026/07/19 03:00
  • 저자 127.0.0.1