Shoichi Matsuda's diary

このブログは移転しました。 https://shoma2da.net/ が新しいブログです。

GitHubを使ってるならhubコマンドを使うべし

前回の「今さら聞けないgit pushコマンド」に続きGitネタです。
今日はGitHubを使う全てのユーザの方におすすめしたいhubコマンドを紹介します。

hubコマンドとは

GitHub社が公開しているコマンドです。
リポジトリはこちら。https://github.com/github/hub

gitコマンドをラップしていて、GitHub上の操作をCUIから行うことができるようになります。

導入

導入はとっても簡単です。

インストール

Homebrewならコマンド一発です。

$ brew install hub

alias設定

hubを直接打たなくても良いようにgitにaliasします。(.bash_profileなどに記載してください)
hubgitをラップしているので今まで素のgitで使っていたコマンドは全て使えます。

eval "$(hub alias -s)"

いきなりコマンドを置き換えるのが少し気持ち悪い方はやらなくても良いでしょう。hubって直接打てばいいだけですし。

特に便利なコマンド

hubには独自のコマンドがかなりたくさん用意されていますが、個人的に好きなコマンドを紹介していきます。
alias設定している前提でコマンドを載せています。alias設定していない場合はgithubに置き換えて実行してください。

GitHub上のリポジトリを見る

現在のリポジトリをGitHubで見ます。 地味に一番便利かもしれません。

$ git browse

Pull Requestを出す

普通はGitHubのWebページでPull Request操作をすると思いますが、これもhubコマンドで一発です。
今回は省略しますが、オプションを使ってマージ先の選択やissueとの関連付けなどもできます。

$ git pull-request #現在のブランチからmasterへのPull Requestを作成

cloneする

素のgitコマンドでは完全なURLを指定してcloneしますが、hubではかなり省略した書き方ができます。

$ git clone github/hub

#自分のリポジトリなら更に省略できます。
$ git clone myrepo

Pull Requestから直接checkout

Pull Requestを出しているブランチを直接チェックアウトできます。 こちらも地味にかなり便利。

$ git checkout https://github.com/defunkt/hub/pull/73

Pull Requestをマージ

Pull Requestをマージできます。
checkoutやこれもマスターすれば、GitHubを開くことはかなり少なくなると思います。

$ git merge https://github.com/defunkt/hub/pull/73

GitHub上でdiffを表示

GitHub上でdiffを見ることができます。
このコマンドに関してはdiffではなくてcompareなので少し覚えづらいのがつらいところです。

$ git compare before_branch..after_branch

GitHub Enterpriseを使ってる人は

ホストをデフォルトのgithub.comから変更しましょう。(なかなかいないとは思いますが...。)

$ hub config --global hub.host hostname

$ hub config --list --global #設定を確認