Help us understand the problem. What is going on with this article?

ghq, peco, hubで快適Gitライフを手に入れよう!

More than 3 years have passed since last update.

はじめに

peco, hubは前から使っててghqは存在は知りながらも「別にリポジトリ管理は必要ないかなー」と思ってたのですが、管理するリポジトリ数が増えてきて面倒になってきたので試しに入れてみたらかなり良かったので紹介したいと思います :smile:

ghq, peco, hubとは?

ghq

ghqは上でも軽く書いたようにリポジトリ管理ツールになります。
例えばgit cloneの代わりにghq get <repository URL>とコマンドを打つとghqルートディレクトリ(デフォルトでは~/.ghq)以下にリポジトリがcloneされ、
ghq listでghqルートディレクトリ以下のGitリポジトリ一覧を表示、
ghq look <project>で指定したリポジトリに移動する、といったように使います。

peco

pecoは文章で説明するのは難しいのですが、CLI上で例えばps auxなどのようにリスト表示されるものをインクリメンタルサーチできるようにするものです。

詳しくはGithub参照ということで
https://github.com/peco/peco

hub

hubはGithubをCLI上で操作するためのツールです。
本記事ではhub browse(Githubで指定したリポジトリを開く)をするためだけに利用します。

インストール

全てGo製のライブラリなのでgo getしていただくか、もしくは全てhomebrewでもインストールできるのでそちらでやっていただければOKです

ghq

$ brew install ghq
# or
$ go get github.com/motemen/ghq

peco

$ brew install peco
# or
$ go get github.com/peco/peco/cmd/peco

hub

$ brew install hub
# or
$ go get github.com/github/hub

やったこと

各ツールの基本的な使い方は各公式サイトをご覧ください。

今回、僕はghqで管理しているリポジトリをpecoを使って選択し、ローカル・リモート両方に移動できるようにしました。

結論から言いまして、以下2つのエイリアスでこれを実現しました。

alias g='cd $(ghq root)/$(ghq list | peco)'
alias gh='hub browse $(ghq list | peco | cut -d "/" -f 2,3)'

ローカルリポジトリへの移動: $ cd $(ghq root)/$(ghq list | peco)

g.gif

ローカルリポジトリへの移動なのですが、これは上記にもある通りghq lookでもできます。
ghq lookはプロジェクト名のサジェストもできるのでこれでもいいと言えばいいのですが、インクリメンタルサーチが欲しかったのとghq lookの動作が微妙に遅いという理由があり、このようなコマンドに至りました。

$(ghq root)

ghqのルートディレクトリを返してくれます

$(ghq list | peco)

ghq listをpecoでインクリメンタルサーチできるようにしています

ghq listは'-p'オプションでフルパスで一覧表示を、--uniqueオプションでプロジェクト名のみの一覧表示をしてくれます。
-pは個人的には冗長で嫌、--uniqueではインクリメンタルサーチする時にユーザー名で絞り込めず不便、ということでオプションは無しにしています。
フルパス表示で特に問題ないならghq rootは無しでcd $(ghq list -p | peco)で大丈夫ですし、プロジェクト名だけでよくてかつghq lookの速度が気にならないならghq look $(ghq list --unique | peco)でも良さそうです。

リモートリポジトリへの移動: $ hub browse $(ghq list | peco | cut -d "/" -f 2,3)

gh.gif

hub browse <user>/<repository>

Githubの指定したリポジトリを開きます

cut -d "/" -f 2,3

ghq listでの表示は例えばRubyのリポジトリだと"github.com/ruby/ruby"のようになります。
hub browseでは頭の'github.com/'はいらないため、cutで2~3個目の要素(ruby/ruby)を切り出しています。

まとめ

以上のようにghq, peco, hubを使うことでGitリポジトリの管理と移動を便利にすることができました!
もしリポジトリの管理が面倒だったり「あのリポジトリどこに作ったっけ・・・」みたいなことが起きているならば使ってみてはいかがでしょうか?

宣伝

クラウドワークスでは働き方に革命を起こしたいエンジニアを募集しております!
興味のある方はとりあえずお話だけでもいかがでしょうか?

お待ちしております!

repro
世界59か国6,500以上の導入実績を持つCE(カスタマーエンゲージメント)プラットフォーム「Repro(リプロ)」を提供
https://repro.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした