コマンド紹介シリーズ: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