GitHub CLI は、GitHubによってリリースされた新しいツールで、端末に問題/PR管理タスクをもたらします。 これは、ソフトウェア開発ワークフローの多くをビジュアル領域(ブラウザ)ではなくテキスト領域に取り込む重要なツールになります。 それはghと呼ばれています!

それは何をするためのものか?

GitHub CLIを使用すると、ターミナル内から問題/PR/リポジトリを管理できます。 あなたにアイデアを与えるために、ここにAPIの大まかな概要があります:

$ gh issue [status, list, view, create]
$ gh pr [status, list, view, checkout, create]
$ gh repo [view, create, clone, fork]
$ gh help

--helpフラグを追加して、特定のコマンドに関するドキュメントを取得することもできます。 このような:

$ gh repo fork --help

ghgitと同じではないことに注意してください。 これは、ghがGitHub機能のみを端末に提供するためです。 バージョン管理は、gitで処理する必要があります。 💻

GitHubCLIのインストール

GitHub CLI には、主要なオペレーティングシステム用のリリースがあります。 たとえば、Macを使用している場合は、Homebrewを介してインストールできます。

$ brew install github/gh/gh

ボイラ! ghコマンドが端末で使用可能になっている必要があります。 ghを最初に実行するときは、ブラウザーでGitHub CLIを(OAuth経由で)認証する必要があります。

さて、あなたはロックする準備ができています! 🤘😤

問題とgh

食欲をそそるだけの興味深いコマンドをいくつか取り上げます。 公式React.jsリポジトリをモルモットとして使用してghコマンドを実行してみましょう。

クローンを作成して、reactリポジトリに移動しましょう。

$ git clone [email protected]:facebook/react.git
$ cd react

$ gh issue --helpを実行して、使用可能なコマンドを確認しましょう。

# Usage:
#   gh issue [command]

# Available Commands:
#   create      Create a new issue
#   list        List and filter issues in this repository
#   status      Show status of relevant issues
#   view        View an issue in the browser

うーん、すべての問題を見てみましょう:

$ gh issue list

次の出力が表示されます。

terminal output

gh issue listで使用できるフラグもあります。 --helpフラグを使用して、詳細情報を表示してみましょう。

$ gh issue list --help

次のドキュメントが表示されます。

# Usage:                                       
#  gh issue list [flags]                      

# Flags:                                       
#  -a, --assignee string  Filter by assignee 
#  -l, --label strings    Filter by label   
#  -L, --limit int        Maximum number of issues to fetch
#  -s, --state string     Filter by state: {open|closed|all}

ダン・アブラモフ( @gaearon )が今彼の皿に何を持っているのだろうか。 実行してみましょう:

$ gh issue list --assignee gaearon

彼には3つの問題が割り当てられています。 上級開発者であることは素晴らしいことだと思います…

terminal output

最初の問題は面白そうです🤨。 それを見てみましょう:

$ gh issue view 18085

これにより、実際にデフォルトのブラウザが開き、URLに移動します。 --previewフラグを追加すると、端末に直接出力されます。

$ gh issue view 18085 --preview

terminal output

ブラウザを開かずにどれだけ遠くまで到達したかは驚くべきことです。 これまでのところ、問題のみを見てきました。 ghがPRにどのように役立つか見てみましょう。

プルリクエストとgh

私たちがReactのリードメンテナーの1人だったと想像してみてください。 私たちの日常業務の1つには、次のものが含まれる場合があります。

  • 現在のPRの表示
  • 特定のPRについて読む
  • コードのテスト

これはghだけで達成できますか? 使用できるコマンドを見てみましょう($ gh pr --help):

# Usage:
#   gh pr [command]

# Available Commands:
#   checkout    Check out a pull request in Git
#   create      Create a pull request
#   list        List and filter pull requests in this repository
#   status      Show status of relevant pull requests
#   view        View a pull request in the browser

では、今すぐすべてのPRを見てみましょう。

$ gh pr list

出力:

terminal output

最初のPR(#18212)は面白そうです。 それについて読んで、そのブランチに切り替えましょう:

$ gh pr view 18212 --preview
$ gh pr checkout 18212

出力:

chompy@mylaptop: ~/react$ gh pr view 18212 --preview
threepointone wants to merge 1 commit into master from electron-optional-dependencies


  When we yarn/ci, we download electron only because it's listed in react-      
  devtools as a dependency. We don't seem to use it for any tests or bundles    
  though, so it's non-essential for the build. Further the electron download    
  point is flaky, leading to ci failures like this                              
  https://circleci.com/gh/facebook/react/95743 This PR simply moves electron to 
  optionalDependencies, so the build doesn't fail even if the download fails.   

View this pull request on GitHub: https://github.com/facebook/react/pull/18212
chompy@mylaptop: ~/react$ gh pr checkout 18212
From github.com:facebook/react
 * branch                refs/pull/18212/head -> FETCH_HEAD
Already up to date.

そのように、PRコードを取得して、そのブランチに切り替えました。 かなりクール!

レポとgh

そして簡単に、gh repoで何ができるか見てみましょう。

# Usage:                                     
#   gh repo [command]

# Available Commands:
#   clone       Clone a repository locally
#   create      Create a new repository
#   fork        Create a fork of a repository.
#   view        View a repository in the browser.

react リポジトリの新機能の開発(またはバグの修正)を開始したい場合は、次のコマンドを実行するだけです。

$ gh repo fork

そしてすぐに働き始めます。 その後、新しいPR($ gh pr create)を作成できます! このすべての機能がターミナルで利用できるようになったのは、ちょっと驚くべきことです。

要約

ghの目標は、ブラウザを開いて github.com にアクセスする代わりに、ターミナル/エディタ内にとどまることができるようにすることで、「コンテキストの切り替えを最小限に抑える」ことです。 GitHub固有の機能の大部分はghから利用できるため、確かに配信されているようです。 💥

ドキュメントのウェブサイトでGitHubCLIをチェックしてください🐙🐱