知らないと損?Git操作が捗るhub, ghq, pecoの紹介【実例付き】

シェル

こんにちは。Webエンジニアの仁科(@nishina555)です。

みなさん、Git操作はどのように行なっていますか?

Gitといえば、Sourcetreeをはじめとする優れたGUIツールが色々ありますが、エンジニアの方はターミナルで操作をする人が結構いるのではないかと思います。

もし、ターミナルでGitコマンドを叩いているようでしたら、『hub』『ghq』『peco』は知っておいて損はないツールです。

今回は、『peco』『hub』『ghq』を利用した、ターミナルでのGit操作を快適にするための方法について紹介をします。

今回の記事で紹介する内容は以下です。

今回の記事で紹介するコマンド集
  • 現在の作業リポジトリをブラウザで表示する
  • リポジトリの一覧を検索し、ブラウザを表示する
  • リポジトリのディレクトリへ移動

各種コマンドの紹介

実例を紹介する前にまずはhub、ghq、pecoの機能について紹介をします。

リポジトリのURLがすぐに開けるhub

hubとはGitHubの操作をコマンドラインから行うためのツールです。
hubには色々なコマンドが用意されていますが、以下の二つは特に使う頻度が多いでしょう。

コマンド 内容
hub browse リポジトリをブラウザで開く
hub pull-request プルリクエストの作成。-bでマージ先ブランチの変更。デフォルトはmaster

hubを導入することでターミナル上で現在作業しているリポジトリのURLをコマンド一発で開けるようになるので作業効率が一気に捗ります。

リポジトリの管理が楽になるghq

ghqはリポジトリを一元管理してくれるツールです。

ghqを利用することでローカルにcloneされるディレクトリを設定できます。
これにより、色々とリポジトリをcloneしてきてどこになにがcloneされいてるかわからないという問題おこらなくなります。

ghqにも色々なオプションがありますが、よく使うコマンドは以下の二つです。

コマンド 内容
ghq get ghq get [リポジトリ]で、ghqのrootパスにcloneされる
ghq list ghqで管理されているリポジトリのリストを表示。-pでパスを表示

ghqの設定は~/.gitconfigに記載されています。

~/.gitconfig

[ghq]
  root = ~/nishina555/git

上記の設定の場合、ghq get hoge/fugaでcloneしてきたリポジトリは~/nishina555/git/github.com/hoge/fugaというディレクトリに配置され、ghq listを実行するとgithub.com/hoge/fugaと表示されます。

結果一覧をインクリメンタルサーチできるpeco

pecoは結果一覧をインクリメンタルサーチできるツールです。

pecoは一覧を絞り込み検索する機能なので色々な応用ができます。

例えば、ファイル検索の場合、find . | pecoでカレントディレクトリ以下のファイル一覧を絞り込み検索できます。

pecoの使い方については『pecoなしじゃ開発できない!ターミナルの検索を快適にしてくれるpecoの紹介』で紹介をしたので興味のある方はご覧になってください。

pecoなしじゃ開発できない!ターミナルの検索を快適にしてくれるpecoの紹介

2018.10.18

Git操作をする上で覚えておくといい活用例

では次にhub、ghq、pecoのコマンドを利用してどういったGit操作が捗るようになるのか、またどのように実現するのかについて紹介をしたいと思います。
なお、実例については『ghq, peco, hubで快適Gitライフを手に入れよう!』の記事を参考にさせていただきました。

結論を先に話すと以下のコマンドに対してエイリアスを貼っておくとGit操作がかなり捗ります。

.zshrc

# 現在の作業リポジトリをブラウザで表示する
alias hbr='hub browse'

# リポジトリの一覧の中からブラウザで表示したい対象を検索・表示する
alias hbrl='hub browse $(ghq list | peco | cut -d "/" -f 2,3)'

# リポジトリのディレクトリへ移動
alias gcd='cd $(ghq root)/$(ghq list | peco)'

では詳しく解説していきます。

事前準備: ツールのインストール

まずは各種ツールのインストールをしておきましょう。
インストール方法ですが、MacであればHomebrewでできます。そのほかのOSについては各リポジトリのREADMEをご参照ください。

$ brew install hub
$ brew install ghq
$ brew install peco

現在の作業リポジトリをブラウザで表示する

リポジトリをブラウザで表示するにはhubを利用します。
さきほども紹介をしましたが作業ディレクトリで以下のコマンドを叩けば一発でリポジトリをブラウザで表示できます。

$ hub browse

リポジトリの一覧の中からブラウザで表示したい対象を検索・表示する

pecoでリポジトリ一覧をインクリメンタルサーチし、最終的に選択したリポジトリをhubに渡してブラウザで表示させるというものです。
コマンドは以下になります。

$ hub browse $(ghq list | peco | cut -d "/" -f 2,3)

ghqで管理されている全リポジトリをghq listで取得し、pecoに結果を渡しています。
hub browseの引数で必要なリポジトリ名の部分だけ渡すためcutコマンドで結果を切り取っています。

リポジトリのディレクトリへ移動

ghqとpecoを組み合わせることでリポジトリ一覧をインクリメンタルサーチし、最終的に選択したリポジトリに移動する方法です。

リポジトリ一覧のインクリメンタルサーチは以下の方法で実現できます。

$ ghq list | peco

上記のコマンドで最終的に選択されたリポジトリをcdコマンドの引数にすることで対象のリポジトリに移動することができます。
ghq listはリポジトリ名のみなのでghq rootと組み合わせることでリポジトリのパスを渡すことができます。
最終的なコマンドは以下のようになります。

$ cd $(ghq root)/$(ghq list | peco)

複数のリポジトリを同時に開発する時などに重宝するコマンドです。

まとめ

今回はGit操作が効率的になる『hub』『ghq』『peco』の紹介を終わります。

この記事がいいなと思いましたらツイッター(@nishina555)のフォローもよろしくお願いします!