GitHub CLIのすヽめ&オレオレ関数で効率化していく
どうも。トラハックです。
普段はReactなどフロントエンドの学習講座やネタ動画をYouTubeにアップしている者です。
この記事は、実務でもっとGitHub CLIを触ってみたら、随時updateしていきます。
GitHub CLIとは
2020/09/18にGitHub CLI 1.0がリリースされました。
GitHub公式のCLIが遂に登場したということですね。
従来のGitHub用CLIはhubが有名でしたが、せっかくなら公式のCLIを使いたいよね?ということで試行錯誤した結果を残します。
GitHub CLIを使うと嬉しいこと
そもそもなぜGitHubのCLIを使うのか?
CLIということは、ブラウザではなくターミナルで全ての操作を完結できるということです。
私が感じるメリットは以下です。
- 複数のブラウザ操作をワンライナーのコマンドで代替できる
- 手順を覚える必要がない
- シェルスクリプトの関数と組み合わせることでさらに効率up
例えば「リポジトリの作成」をしたいとき、ブラウザでGitHubを開き、ぽちぽちとマウス操作して必要な情報を入力し、何度もページ遷移する必要がありますよね。
それがCLIならgh repo create
のようなワンライナーのコマンドで完結します。
さらにGitHub CLIは対話モードで必要な情報を確認してくれるので、手順を覚える必要がありません。
この記事の最後で紹介するような、シェルスクリプトのオレオレ関数を作ることで、繰り返し何度も実行するような処理を効率化することも可能です。
ということでGitHub CLIを使ってみましょう。
GitHub CLIの使い方
GitHub CLIを使うためには以下の準備が必要です。
- GitHub CLIのインストール
- GitHubアカウントの認証
ということで準備を済ませましょう。
GitHub CLIのインストール
Homebrewで簡単にインストールできます。
$ brew install gh
CLIからGitHubアカウントにログインしよう
インストールしたら認証を済ませましょう。
$ gh auth login
以下のように聞かれるので、GitHub.com
を選ぶ。
? What account do you want to log into? [Use arrows to move, type to filter]
> GitHub.com
GitHub Enterprise Server
今回はブラウザからログインしてみます。
? How would you like to authenticate? [Use arrows to move, type to filter]
> Login with a web browser
Paste an authentication token
以下の表示が出るので、8桁のワンタイムコードをコピーしてEnterを押下。
! First copy your one-time code: XXXX-XXXX
- Press Enter to open github.com in your browser...
ワンタイムコードを貼り付けて進めます。
そのままAuthorizationを進めてPasswordを入力するとブラウザ上での操作は完了です。
ターミナルに戻ってEnterを押します。
✓ Authentication complete. Press Enter to continue...
Gitリポジトリにアクセスする際の通信プロトコルを選択します。お好みでどうぞ。
? Choose default git protocol [Use arrows to move, type to filter]
> HTTPS
SSH
認証完了です!
✓ Configured git protocol
✓ Logged in as deatiger
GitHub CLIのコマンドを試し打ちしてみる
認証が完了したことで、ghから始まる魔法のコマンドが実行できるようになりました。
試し打ちしてみましょう。
なお、詳しいコマンドの使い方は公式マニュアルから確認するのが良いでしょう。
今回はいくつかピックアップしてご紹介します。
GitHub CLIでissueの一覧表示
現在のディレクトリのリポジトリのissueを一覧表示できます。
$ gh issue list
GitHub CLIでリポジトリを作成
ブラウザ上でぽちぽちとリポジトリ作成をする手間が無くなります。
$ gh repo create <REPO_NAME> [flags]
オプションで色々指定できますね。
FLAGS
-y, --confirm Confirm the submission directly
-d, --description string Description of repository
--enable-issues Enable issues in the new repository (default true)
--enable-wiki Enable wiki in the new repository (default true)
-h, --homepage string Repository home page URL
--internal Make the new repository internal
--private Make the new repository private
--public Make the new repository public
-t, --team string The name of the organization team to be granted access
-p, --template string Make the new repository based on a template repository
GitHub CLIで使用するエディターをnanoからVimに変更
GitHub CLIのエディターはデフォルトではnanoになっています。
みんなもちろんエディターはVimだよな?ってことで変更
$ gh config set editor vim
GitHub CLIでプルリクエストを作成
プルリクエスト関連のコマンドは一番使いそうですね。
プルリクエストの作成は、オプションを指定しなかった場合、対話モードで色々聞いてくれます。
$ gh pr create
Creating pull request for feature-pr3-test into develop in deatiger/gh-test
? Title Add a file for PR#3
? Body [(e) to launch vim, enter to skip]
? What's next? [Use arrows to move, type to filter]
> Submit
Continue in browser
Add metadata
Cancel
Body(プルリクエストの説明文)は、先ほど設定したエディターで編集可能です。
そのままSubmitするか、ブラウザで確認するかも尋ねてくれます。
GitHub CLIでエイリアスを設定する
以下のコマンドで設定できます。
$ gh alias set <ALIAS_NAME> "<COMMANDS>"
試しに、「カレントディレクトリのリポジトリをブラウザで開く」コマンドがgh repo view --web
と長ったらしいのでエイリアスに設定してみます。
$ gh alias set rvw "repo view --web"
gh rvw
を実行すると開いてくれるようになりました。
GitHub CLIでオレオレ関数を作る
GitHub CLIを組み込んだオレオレ関数をシェルスクリプト内に作っちまいましょう。
私はzshを使っているので、編集するファイルは.zshrc
です。
プルリクエストの一覧を確認してチェックアウト
プルリクエストされたブランチにチェックアウトしてファイルを確認したいときに使う
prco () {
gh pr list;
echo "Type the number of PR to checkout: " && read number;
gh pr checkout ${number};
}
プルリクエストの一覧を確認して差分を表示
カレントブランチとの差分をターミナルで確認したいときに使う
prdiff () {
gh pr list;
echo "Type the number of PR to checkout: " && read number;
gh pr diff ${number};
}
git initからのFirst commitからのリポジトリ作成からのデフォルトブランチの切り替えまで一気に終える関数
プロジェクトごとに必ずやる作業ですよね。
地味に面倒なので関数で一気にやる。
gcre() {
git init && git add . && git status && git commit -m "First commit"
echo "Type repository name: " && read name;
echo "Type repository description: " && read description;
gh repo create ${name} --description ${description}
git remote add origin https://github.com/deatiger/${name}.git
git checkout -b develop;
git push -u origin develop;
}
1行ずつ解説すると...
- ローカルリポジトリ作って全部addしてcommit
- 対話モードでリポジトリ名を入力
- 対話モードでリポジトリの説明を入力
-
gh repo create
コマンドの登場!2.と3.で入力した変数を使って設定 - 4.で作成したリモートリポジトリをoriginに設定
- developブランチを作成してチェックアウト
- developをデフォルトブランチに変更してpush
なお、4.のコマンド実行後に対話モードでいくつか聞かれます
- 公開状態をPublic, Private, Intenalのいずれにするか
- カレントディレクトリに作成するか
※gh repo create --public
のように公開状態をオプションで指定することもできます。場合によって公開状態を変えることが多いので、私は対話モードで尋ねてもらうようにしています。
以上、GitHub CLIのすヽめでした。
最後に、toraco株式会社では2024年11月1日にエンジニア向けのコミュニティを立ち上げました。
Discord のサーバーで運営しており、以下のリンクから無料で参加できます。コミュニティ内では以下のような投稿・活動がされます!
Discussion
とても参考になる記事ありがとうございます。
・ プルリクエストの一覧を確認してチェックアウト
・プルリクエストの一覧を確認して差分を表示
のコードが同じみたいです。
ご指摘ありがとうございます!
修正いたします🙆♂️