ちょっと話題の記事

GitHub のコマンドラインツール「hub」の基本と便利な使い方のまとめ

2016.05.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

hub-01

hub とは

hub は、GitHub に対する操作をコマンドラインから簡単に行うためのツールです。プルリクエストの作成リポジトリのクローンリポジトリページのブラウザでのアクセスなどといった操作をコマンドだけで操作することができる、GitHub を使っている開発者には欠かせない便利ツールです。

hub を紹介している記事はすでに数多くありますが、本記事では hub の基本 をまとめつつ、 より簡単に使うための Tips を紹介したいと思います。

hub のインストール

Mac をお使いであれば Homebrew で簡単にインストールすることができます。

$ brew install hub
$ hub --version
git version 2.6.2
hub version 2.2.2

エイリアスの設定

hub は、git コマンドとほぼ同等に使うことができます。clonepullpush などといったような通常の git コマンドはそのまま使うことができます。

$ hub push origin master

また反対に、hub のコマンドを git コマンドのように使いたい場合は、.bash_profile または .zshrc にエイリアスを張りましょう。

bash の場合

eval "$(hub alias -s)"

zsh の場合

function git(){hub "$@"}

なお、プロンプトにブランチ名などを表示している場合、下記の通りに設定すると高速化できます( git コマンドそのものを実行する時に hub コマンドを経由しない)。

GitHub アカウントの設定

GitHub アカウントが必要なコマンドを叩くときは、アカウントの設定が必要です。

$ hub 
github.com username:

MFA (多要素認証) を有効化している場合は、OAuth トークンを使ってアクセスするようにします。

OAuth トークンは GitHub の Settings の中にある Personal access tokens にて生成することができます。

hub-02

生成したらトークンをコピーします。 ~/.config/hub ファイルを、以下のフォーマットで作成します。

---
github.com:
- protocol: https
  user: YOUR_USER_ID
  oauth_token: YOUR_OAUTH_TOKEN

これで、OAuth トークンを利用して hub コマンドを実行することができます。

hub コマンド一覧

hub コマンドの機能を一覧にしました(git コマンドと同じ動作をするコマンドは割愛)。チートシート的に活用ください。

コマンド 機能
clone リポジトリをクローンする。URL指定ではなく github/hub のような指定だけでクローンできる。
pull-request プルリクエストを作成する。-b オプションでベースブランチを指定できる。
fork リポジトリをフォークする。
create リポジトリを新規作成する。
browse リポジトリをブラウザで開く。
compare 特定のブランチとローカルブランチの Compare ページをブラウザで開く。
release リリースを一覧する、または新規作成する。
issue Issue を一覧する、または新規作成する。
ci-status CI のステータスを取得する。

※ hub version 2.2.3 現在のコマンド一覧です。今後、アップデートにより追加・削除される可能性があります。

よく使うコマンドをもっと簡単にする

個人的には、プルリクエストを作成するコマンド pull-request を打つのがちょっと面倒です。

$ hub pull-request

また、リポジトリをブラウザで開くコマンド browse も面倒です。

$ hub browse

そこで、エイリアスを貼ります。貼るだけです…

$ git config --global alias.pr pull-request
$ git config --global alias.see browse

これで、より簡単にコマンドを打つことができるようになります。

$ hub see
$ hub pr

まとめ

私が hub コマンドで最も重宝しているのがプルリクエストを作成する機能です。ブラウザで GitHub のページをいちいち開いてプルリクエストを作成して…と言うのはちょっと手間なので、hub コマンドを使って効率的にプルリクエスト運用しましょう。

参考