GitHub CLIとは
GitHub CLI は、すべての作業を 1 か所で行うことができるように、pull request、issues、GitHub Actions などの GitHub 機能をターミナルに集めたコマンドライン ツールです。
ブラウザを開かなくてもGitHubの操作が可能になる。
鍵作成&登録などもコマンド一発でできるらしく、今更ながら使ってみた。
コマンド名はgh
インストール & セットアップ
ubuntuにghをインストール
公式ドキュメント
Debian, Ubuntu Linux, Raspberry Pi OS (apt)
(type -p wget >/dev/null || (sudo apt update && sudo apt-get 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 \
&& 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
wsluをインストール
wsl用のユーティリティコマンドが含まれているパッケージ。
このパッケージに含まれるwslviewを利用することでwslからWindowsのブラウザを開く
apt install wslu
GitHubにログイン
このコマンド一つで鍵の作成からGitHubへの公開鍵登録までしてくれる
gh auth login
gitのセットアップ
gh auth setup-git
ghのデフォルトエディタをvimに変更
デフォルトはnanoなのでvimに変更する
gh config set editor vim
参加しているOrganization一覧
gh org list
使い方
リポジトリ操作
リポジトリ作成
gh repo create --private -c REPO_NAME
-
--private
: プライベートリポジトリを作成 -
-c
: リポジトリ作成と同時にclone -
REPO_NAME
: リポジトリ名
Clone
gh repo clone USER_NAME/REPO_NAME
-
USER_NAME
: GitHub ユーザー名 -
REPO_NAME
: リポジトリ名
リポジトリ削除
gh repo delete USER_NAME/REPO_NAME
リポジトリ名を入力すると削除できるが、初回は権限エラーが出るため、権限追加する
gh auth refresh -h github.com -s delete_repo
Issue
Issueを作成
gh issue create -a "@me"
-
-a
:--assignee
アサイニー名"@me"
で自分を指定できる
Issue一覧
gh issue list
Issueにコメント
gh issue comment ISSUE_NUMBER
Issueを削除
gh issue delete ISSUE_NUMBER
Pull Request
プルリクエストを作成
gh pr create -B BASE_BRANCH_NAME -a ASSIGNEE_NAME -r REVIEWER_NAME
-
-a
:--assignee
アサイニー名"@me"
で自分を指定できる -
-B
:--base <branch>
コードをマージしたいブランチ名 -
r
:--reviewer
: レビュアー名
ドライランも可能
gh pr create -B BASE_BRANCH_NAME --dry-run
プルリクエスト一覧
gh pr list
プルリクエストをマージ
gh pr merge PULL_REQUEST_NUMBER