コマンド紹介シリーズ:ghq
コマンド紹介シリーズ第8回は、ghqというコマンドを紹介します。ghqを使うとgitレポジトリからcloneする際にとても便利に扱えるようになります。
なお、第7回は以下になりますので、ぜひご興味があればご覧ください。
ghqとは?
ghqとは公式の説明によると、
'ghq' provides a way to organize remote repository clones, like go get does. When you clone a remote repository by ghq get, ghq makes a directory under a specific root directory (by default ~/ghq) using the remote repository URL’s host and path.
ということで、まとめると以下になりますね。
- リモートリポジトリのクローンを扱うための方法を提供
-
ghqを使ってリポジトリをcloneするとき、ghqは特定のフォルダの元にcloneするため、全てのプロジェクトを同じフォルダで管理できる
第7回で紹介したpecoと組み合わせることでとても便利に扱えるため、今回紹介させてもらいます。
使ってみる
インストール
毎度のことながらmacbookを使っているので、以下でインストールしました。
brew install ghq
また合わせてpecoを利用しますが、pecoについては以下の記事を参照ください。
環境設定
まずは保存されるフォルダの指定をします。gitのグローバル設定でghq.rootに保存するフォルダを設定します。以下のコマンドで設定してください。
git config --global ghq.root '<保存したいパス>'
レポジトリのclone
レポジトリを取得するにはghq get hogehogeと実行するだけです。試しにghqのレポジトリを取得するためには以下を実行します。
ghq get git@github.com:x-motemen/ghq.git
pecoを使った一覧表示
ghqで取得したレポジトリ一覧をみるためには以下のコマンドで実行できます。
ghq list
ただしこのコマンドでは全ての一覧が取得できるだけでそのフォルダへ移動するなどはできません。そこでpecoを利用した設定を行うことで指定したレポジトリに一瞬で移動できます。
function peco-src () {
local selected_dir=$(ghq list -p | peco --prompt="repositories >" --query "$LBUFFER")
if [ -n "$selected_dir" ]; then
BUFFER="cd ${selected_dir}"
zle accept-line
fi
zle clear-screen
}
zle -N peco-src
bindkey '^]' peco-src
この方法はghq + pecoを使っている方の中では王道中の王道の設定になっている気がします!これをshell scriptなどに実装してシェル起動時に読み込ませることで利用できます。^]を入力すると以下のようにpecoの画面が表示され、レポジトリ一覧が表示されます。移動したいレポジトリを洗濯してエンターキーを押すと該当するレポジトリにディレクトリが変更されます。誠に申し訳ないですが、フォルダ情報やレポジトリが表示されちゃうのでほとんどがマスキングされてしまいましたが、一覧でフォルダが大量に表示されます。。。

まとめ
今回はghqの紹介をさせていただきました。レポジトリをcloneする場所を考える必要もないですし、pecoと併用すると場所を忘れたとしても検索で一っ飛びできますので、ぜひghq+pecoで快適なgit環境を構築してみてください。
Discussion