ローカルでのGitリポジトリ管理の心強い味方、それがghq!
ghqはGOで作られたライブラリでHomebrewなどでインストールが出来ます。
ghq単体だとそこまで便利さを感じないのですが、
peco
・fzf
といった「インクリメンタルサーチ」が行えるライブラリと組み合わせるととてつもなく強力!
どんな事が出来るかというとGitリポジトリのフォルダ移動が超がつくほど簡単になります!
↑の動画の「Alamofire」「auth0」はGitHubで公開されている有名リポジトリをローカル内にcloneしてきたもので、
その該当フォルダに即座に移動しています。
検証した環境
1 | ghq | 1.2.1 |
Gitリポジトリのフォルダ管理の問題点
リポジトリのclone場所は基本的にどこでも動く(例外や言語による特殊ケースなどありますが )ため、
どのフォルダにcloneしても問題がありません。
その結果
- リポジトリをcloneするフォルダにルールがない
- 結果リポジトリ迷子に
- 同じリポジトリを2つcloneして意図と反する方を編集してしまう
などなど
リポジトリフォルダの悩みはつきません。
私もGit操作を始めたばかりの頃「どこにcloneしよう…」と迷い
挙句の果てにはどこにcloneしたかを忘れる、という事をよくしていました 😅
しかし、今は ghqというライブラリの存在を知り、
Gitのリポジトリ管理はghqに任せているため、どのフォルダに保存するか?という事で迷う事はありません。
そして前述したpeco
・fzf
といった「インクリメンタルサーチ」が行えるライブラリと組み合わせる事ですぐに該当リポジトリのフォルダに移動が出来ます。
ghqの導入
Macを使っている人はHomebrewを使って簡単にインストール出来ます
$ brew install ghq
go
でもインストール出来ます
$ go get github.com/x-motemen/ghq
その他のインストール方法は公式のGitHubで
インストール出来たことの確認
$ ghq -v
ghq version 1.2.1 (rev:dd139fb)
ghqの使い方
リポジトリをcloneするフォルダの設定(Optional)
ghqでcloneされるフォルダはデフォルトで~/ghq
が設定されています。
変更するためには~/.gticonfig
に設定する事で変更出来ます。
# コマンドで変更する場合
$ git config --global ghq.root '~/src'
上記設定は ~/ghq
→ ~/src
に変更しています。
gitconfigに直接記述すると以下のようになります。
[ghq]
root = ~/src
cloneする
ghq get <リポジトリ先>
がcloneと同じ動作になります。
「リポジトリ先」と書いた部分はGitHubの以下の部分。
もちろんsshでアクセス出来るリポジトリであれば、sshを指定しても動作します。
例えば以下のコマンドを実行すると、↑で設定しているghqのフォルダにcloneがされます。
# 試しにauth0-cliのリポジトリをcloneしてみる
$ ghq get https://github.com/auth0/auth0-cli.git
# sshでのアクセス権限があるリポジトリであればsshの指定も可能
# $ ghq get git@github.com:auth0/auth0-cli.git
これでクローンをすると以下のようなフォルダパスにcloneがされます。
(私はghqのclone先フォルダを ~/src に変更しています)
~/src/github.com/auth0/auth0-cli
リポジトリの一覧を確認する
ghqでcloneしたリポジトリの一覧はghq list
を使用します
(ghqでcloneしたというより、上で記載したroot
で指定したフォルダ内のリポジトリフォルダ、という表現の方が正確です。)
$ ghq list
github.com/Alamofire/Alamofire
github.com/auth0/auth0-cli
オプションとして-p
を渡す事でフルパスを出力出来ます
$ ghq list -p
/Users/yuu/src/github.com/Alamofire/Alamofire
/Users/yuu/src/github.com/auth0/auth0-cli
この-p
とインクリメンタルサーチを組み合わせると簡単にフォルダ移動が出来ます
# ghqでリポジトリ一覧をpecoに渡し、選択したフォルダに移動(cd)する
$ cd $(ghq list -p | peco)