Claude CodeなどのAIと作業していると、gh pr create のようなコマンドの許可を求められることがあります。git に似ていますが、別の道具です。ここでは gh と git の違い、入れ方、よく使うコマンド、AIに許可を出すときの見分け方を、サンプル料理教室の website リポジトリの例で書きます。読み終わると、AIが何を実行しようとしているかを読めるようになり、許可してよいかを自分で決められるようになります。画面で足りている人には要らない道具なので、その判断も最後に書きました。
この記事の内容
先に答えると
GitHub CLI(gh)は、GitHubのサイトでやる操作をコマンドでやる道具です。git は手元と履歴の操作で、GitHub以外の置き場でも使えます。gh はGitHub専用で、プルリクエスト、Issue、GitHub Actions を扱います。入れ方は Mac が brew install gh、Windows が winget install --id GitHub.cli --source winget で、そのあと gh auth login でログインします。
- コミットやpushは
git、プルリクエストの作成やマージはgh listviewstatusdiffchecksは読むだけcreatemergeclosedeleteeditはGitHubの中身を変えるgh repo delete、公開範囲の変更、--adminは人が必ず確かめる- ブラウザで足りている人は入れなくていい
用語を少しだけ。リポジトリはファイルと変更履歴を入れておく場所です。プルリクエスト(Pull Request、PR)は、変更を本線に入れる前に確認を頼む依頼です。IssueはGitHubの中の課題の一覧で、GitHub Actions はpushなどをきっかけに自動で処理を動かす仕組みです。
gitとghの違い
公式の説明では、git は手元またはリモートのGitリポジトリを扱う道具で、リモートはGitHubでも別のサービスでもかまいません。gh はGitHubを扱うためだけの道具です。プルリクエストという仕組みはGitそのものには無く、GitHubのサイトの機能です。だから git にプルリクエストを作るコマンドはなく、ブラウザか gh で作ります。
| 比べる点 | git | gh |
|---|---|---|
| 相手 | 手元の履歴と、Gitのリモート | GitHubのサイト |
| 代表的な操作 | git commit、git push、git pull | gh pr create、gh issue list、gh run list |
| GitHub以外で使えるか | 使える | 使えない |
| ブラウザで言うと | 無い。手元の話 | プルリクエストの画面、Issueの画面、Actionsの画面 |
| 認証 | HTTPSのトークンかSSH鍵 | gh auth login(Gitの認証も一緒に済ませられる) |

実際の順番で見ると、役割の分かれ方がよく分かります。料金表を直してプルリクエストを出すまでの前半は git の仕事です。
$ git switch -c fix-menu-price
Switched to a new branch 'fix-menu-price'
$ git add menu.html
$ git commit -m "料金表を修正"
[fix-menu-price 20080f8] 料金表を修正
1 file changed, 1 insertion(+), 1 deletion(-)
$ git push -u origin fix-menu-price
To .../origin/website.git
* [new branch] fix-menu-price -> fix-menu-price
branch 'fix-menu-price' set up to track 'origin/fix-menu-price'.
ここまでで、枝 fix-menu-price がGitHubに届きました。ブランチ(枝)は、本線とは別に作業するための線です。ここから先の「この枝を main に入れたいので見てください」という依頼が gh の仕事です。
$ gh pr create --title "料金表を修正" --base main
このコマンドは本物のGitHubにプルリクエストを作るので、この記事のためには実行していません。成功すると、作成されたプルリクエストのURLが表示されます。
インストールとログイン
インストール
| 環境 | 方法 |
|---|---|
| Mac | brew install gh(Homebrewが必要) |
| Windows | winget install --id GitHub.cli --source winget、または公式の配布ページの MSI インストーラー |
| Linux | 公式のページに apt、dnf、zypper の手順あり |
入ったかどうかは gh --version で確かめます。Windows Terminal では、インストール後に新しいウィンドウを開いてから試します。タブを増やしただけでは新しい設定が読まれません。
ログイン
- ターミナルで
gh auth loginと打ちます。 - 接続先を聞かれたら「GitHub.com」を選びます。
- Gitの操作に使う方式を聞かれたら
HTTPSを選びます。 - GitHubの認証情報でGitにも認証するかを聞かれたら
Yと答えます。 - 既定はブラウザでのログインです。画面に出た1回限りのコードをブラウザに入れて承認します。
- 終わったら
gh auth statusで、どのアカウントで入っているかを確かめます。
手順4で Y と答えると、git push の認証も一緒に済みます。トークンはパソコンの資格情報の保管庫にしまわれます。トークンは、パスワードの代わりに使う長い文字列です。保管庫が使えない環境では平文のファイルに書かれることがあるので、保存先は gh auth status で見ます。gh auth status --show-token はトークンをそのまま画面に出すので、AIとの会話の中では使いません。

よく使うコマンド
手元のフォルダが website なら、多くのコマンドはそのリポジトリを相手に動きます。別のリポジトリを指すときは -R sample-cooking/reservation-mail のように付けます。
| コマンド | 何をするか | GitHubを変えるか |
|---|---|---|
gh repo clone sample-cooking/website | リポジトリを手元に持ってくる | 変えない |
gh repo view | 説明とREADMEを表示する。--web でブラウザを開く | 変えない |
gh pr create | プルリクエストを作る | 変える |
gh pr list | 開いているプルリクエストの一覧。既定は30件まで | 変えない |
gh pr view 21 | 21番のタイトル、本文などを表示する | 変えない |
gh issue list | 開いているIssueの一覧。既定は30件まで | 変えない |
gh run list | GitHub Actionsの最近の実行の一覧。既定は20件まで | 変えない |
表示の形は、公式マニュアルの例だと次のようになります。
$ gh pr list
#14 Upgrade to Prettier 1.19 prettier
#13 Add Support for Windows Automatic Dark Mode dark-mode
$ gh issue list
#14 Update the remote url if it changed (bug)
#8 Add an easier upgrade command (bug)
#14 が番号、次がタイトルで、プルリクエストの右端は枝の名前、Issueの右端はラベルです。ブラウザの一覧と同じものを文字で見ているだけです。gh pr view 21 のように番号を付ければ詳しく見られます。差分は gh pr diff 21、自動テストなどの結果は gh pr checks 21 で出ます。

gh pr create は、引数を何も付けなければタイトルと本文を対話で聞いてきます。--fill を付けるとコミットの内容から自動で埋まります。--web ならブラウザの作成画面が開きます。枝がまだGitHubに送られていないと、どこへ送るかを聞いてきます。
なぜAIはghをよく使うのか
ブラウザを開かなくてもプルリクエストを作れるからです。Claude CodeのようなAIは文字のコマンドで作業するので、ボタンを押す画面よりコマンドのほうが扱いやすくなります。Claude Codeの公式の説明にも、Claudeが gh pr create でプルリクエストを作る場合の動きが書かれています。公式のGitHub CLIの説明でも、スクリプトでGitHubの操作を自動にしやすいことが利点に挙げられています。
大きな流れは次のとおりです。人が「この修正でプルリクエストを出して」と頼むと、AIが git で枝を作ってコミットしてpushし、gh pr create で依頼を作り、URLを返します。人はそのURLをブラウザで開いて差分を読み、よければマージします。実際に運用していると、作るところまではAIに任せ、マージのボタンだけは人が押す形にすると事故が減ります。
AIとGitの付き合い方全体は「GitHub CopilotとClaude Code:AIでコードを書くときのGitの使い方」に書きました。
何を実行したかの読み方
gh のコマンドは、ほとんどが「対象、動詞、番号、オプション」の順です。
gh pr merge 21 --squash --delete-branch
| 部分 | 意味 |
|---|---|
gh | GitHub CLIを使う |
pr | 対象はプルリクエスト |
merge | 動詞。マージする |
21 | 21番のプルリクエスト |
--squash | コミットを1つにまとめて入れる |
--delete-branch | マージしたあと、手元とGitHubの枝を消す |
読む順番は、動詞、対象、どこのリポジトリか(-R が付いていないか)、オプションの4つです。この例なら「21番をマージして枝も消す。戻すには手間がかかる」と読めれば十分です。分からなければ、その場で gh pr merge --help を見るか、AIに「このコマンドは何を変えますか」と聞いてから許可します。
読むだけのコマンドと、書き込むコマンドの見分け方
動詞を見れば、ほぼ分かります。AIに許可を出すときは次の表で判断してください。
| 区分 | コマンドの例 | 許可の考え方 |
|---|---|---|
| 読むだけ | gh pr list、gh pr view、gh pr diff、gh pr checks、gh pr status、gh issue list、gh issue view、gh run list、gh run view、gh repo view、gh auth status | 許可してよい |
| 手元だけ変わる | gh repo clone、gh pr checkout | 中身を確かめて許可 |
| GitHubの中身が増える | gh pr create、gh pr comment、gh issue create、gh issue comment | 内容を読んで都度許可。他の人に通知が飛ぶことがある |
| GitHubの状態が変わる | gh pr merge、gh pr close、gh pr edit、gh pr review、gh issue close、gh issue edit、gh run rerun、gh run cancel、gh workflow run | 都度許可。マージは人がやるのが安全 |
| 取り返しがつきにくい | gh repo delete、gh repo edit --visibility、gh issue delete、gh run delete、gh secret set、gh pr merge --admin | 原則AIにやらせない |
見た目で判断しにくいものが3つあります。
gh apiは、GitHubのAPI(プログラム用の窓口)を直接呼ぶコマンドです。既定は読むだけのGETですが、パラメータを足すと書き込みのPOSTになり、--methodでも変わります。付いているオプションまで読みますgh pr create --dry-runは「作らずに内容を表示する」オプションですが、ヘルプに「May still push git changes」とあり、pushは走ることがありますgh pr merge --adminは、要件を満たしていないプルリクエストを管理者の権限でマージします。マージキュー(マージの順番待ちの列)を飛ばして直接マージするときにも使います。レビュー必須などの決まりを飛び越える指定なので、見かけたら止めます
公開範囲の変更はヘルプでも注意が書かれていて、gh repo edit --visibility には --accept-visibility-change-consequences を一緒に付ける決まりです。--visibility public が見えたら、ホームページのファイルや予約メールのスクリプトが全世界に公開されるという意味です。
Claude Codeで許可を出すとき
Claude Codeの公式の説明では、Bashのコマンドは組み込みの読み取り専用のものを除いて確認が入ります。読み取り専用の例として挙げられているのは ls や grep、読むだけの git で、gh の名前はありません。確認が出る前提で考えておきます。
確認の画面で「Yes, and don’t ask again」を選ぶと、そのコマンドの形がリポジトリの .claude/settings.local.json に保存され、次から聞かれなくなります。これは次の考え方で使い分けます。
| コマンド | 選ぶもの | 理由 |
|---|---|---|
gh pr view 21 | 「don’t ask again」でよい | 読むだけ |
gh pr create ... | 1回だけ「Yes」 | 他の人に見える形でGitHubが変わる |
gh pr merge ... | 「No」にして自分で押す | 本線の中身が変わる |
gh repo delete ... | 「No」 | リポジトリごと消える |
選択肢にはこのほかに「Yes, and switch to auto mode」が出ることがあります。選ぶと、人の代わりに自動の判定が確かめるようになり、上の使い分けができなくなります。
ルールは * で範囲を決めます。Bash(gh pr view *) なら gh pr view だけですが、Bash(gh *) にすると gh repo delete まで含めて全部通ります。公式も同じ形の Bash(git *) は全部の git コマンドを許すと説明しています。広い書き方はしないでください。

ghではできないことと、その代わり
| できないこと | その代わり |
|---|---|
| コミットを作る、差分をステージする | git commit、git add、または画面付きの道具 |
| GitLabやBitbucketを操作する | GitHub専用。GitLabなら公式のCLI glab、Bitbucketはブラウザか、それぞれの案内を確かめる |
| 手元のファイルの変更を送る | git push。gh pr create は未pushのときにpushを案内するが、中身の管理はGitの仕事 |
| 差分を見やすい画面で読む | gh pr view --web でブラウザを開く。長い差分はブラウザのほうが読みやすい |
| インターネットなしで動く | GitHubに問い合わせる道具なので不可。手元の履歴を見るだけなら git log |
使わなくていい人
gh は無くても困りません。次に当てはまるなら入れなくていいです。
- プルリクエストの作成やマージをブラウザで済ませている
- GitHub Desktopで「Preview Pull Request」まで行けば足りている
- 受付Aのように見るだけで、たまに画面を開く程度
- GitHubではなくGitLabやBitbucketを使っている
入れておく価値があるのは、AIにプルリクエストまで作らせたい人と、外注エンジニアBのようにターミナルで一日作業している人です。Claude Codeの /install-github-app のように gh の導入を前提にする機能もあります。必要になってから入れれば間に合います。画面で済ませる道具の話は「GitHub Desktop・Sourcetree・VS Codeの使い方と選び方」に書きました。
よく詰まるところ
| 症状 | 原因 | 直し方 |
|---|---|---|
gh が見つからないと出る | インストールされていない、またはターミナルが古いまま | 入れたあと、新しいウィンドウで開き直す |
| ログインを求められる | gh auth login が済んでいない、期限切れ | gh auth login をやり直し、gh auth status で確かめる |
gh は動くのに git push が通らない、またはその逆 | gh と git の認証は別のもの | gh auth login の手順4で Y と答えてやり直す |
| 別のアカウントで動いている | 複数のアカウントでログインしている | gh auth status で見て、gh auth switch で切り替える |
| 違うリポジトリの一覧が出る | 別のフォルダで実行している | website のフォルダで実行するか -R sample-cooking/website を付ける |
gh pr create で送り先やフォークの選択を聞かれる | 枝がまだGitHubに無い | sample-cooking/website への push を選ぶ。フォークは自分の複製を作る操作で、普段は選ばない |
権限の無いリポジトリで gh pr create すると自分の複製ができた | 書き込み権限が無いと、自動でフォークが作られることも、選択肢として出ることもある | 持ち主に権限を確かめる。「GitHubの権限と2段階認証:共同作業者・Organization・非公開リポジトリ」へ |
.github/workflows/ のファイルを git push すると断られる | gh auth login の既定の権限に workflow が含まれない | gh auth refresh -s workflow で足す。詳しくは「GitHub Actionsの使い方:自動で動かす仕組みと無料枠」へ |
gh repo delete が権限不足で止まる | delete_repo の権限が要る | 止まったままにする。本当に消すなら、人がブラウザで確かめてからやる |
gh pr list が空なのにプルリクエストはあるはず | 既定は開いているものだけ | gh pr list --state all で閉じたものも見る |
GitHub Actionsの結果が失敗と出たときは、gh run list で一覧を見て、gh run view で詳しく見ます。Actions自体の話は「GitHub Actionsの使い方:自動で動かす仕組みと無料枠」に書きました。
次に読む
- GitHub Desktop・Sourcetree・VS Codeの使い方と選び方
- プルリクエストとは:作り方・レビュー・マージの流れ
- GitHub Actionsの使い方:自動で動かす仕組みと無料枠
- GitHub CopilotとClaude Code:AIでコードを書くときのGitの使い方