最近、ライブラリなどのソースコードをAIエージェントに読ませる機会が多く、そのたびにローカルにgit clone
してくることが増えました。
しかし、困った問題が一つありました。それは、「リポジトリの数が多すぎて整理整頓ができていない」という課題です。
皆さんは、ローカルにクローンしたリポジトリをどのように管理されているでしょうか?僕は野放図にフラットに並べていたのですが、そのせいでどこに何があるのか分からなくなってしまいました。
本稿では、こうした問題を解決してくれるghq
というツールについて紹介します!
Go言語のライブラリ管理から学ぶ
まず、どう整理したらいいものかと考えたところ、「そういえば、Goのライブラリってうまく整理できてたな〜」ということを思い出しました。
Go言語では、ライブラリは以下のようなツリー構成で管理されています:
github.com/
├── [user1]/
│ ├── [repo1]/
│ └── [repo2]/
└── [user2]/
├── [repo1]/
└── [repo2]/
これは、GitHubのURLの階層構造をそのままディレクトリ構造に反映したものです。非常に直感的で、どこに何があるかが一目瞭然です。
手動でやるには面倒すぎる問題
この構造を自分のリポジトリ整理にも真似したいと思ったのですが、git clone
だけでこれを実現しようとすると結構面倒です。
- まず、ユーザー名のディレクトリを作るために
mkdir -p github.com/[user]
を実行 - 作成したディレクトリに
cd
- そこで
git clone
を実行
少なくとも3ステップはやることがあって、こんなんじゃ「整理するぞ」と意気込んでも、僕だったら三日坊主で終わっちゃいます💦
理想は、GitHubのURLをコピペするだけで、上のようなディレクトリ構造を自動で作ってくれるツールです。そんなツールは無いかな?と思って調べてみました。
ghqとの出会い
そして見つけたのが、ghq
というツールでした。
使い方は非常にシンプルです:
ghq get --look https://github.com/kubernetes-sigs/multicluster-runtime.git
このコマンドを実行すると、~/codes/github.com/kubernetes-sigs/multicluster-runtime
というディレクトリが自動で作成され、その中にgit clone
してくれます。
おまけにcd
までしてくれるので、すぐに作業を開始できます!
まさに痒いところに手が届く感じです。
設定方法
リポジトリをクローンする場所は、グローバルのgit configでghq.root
を設定するだけです。
僕は~/codes
にリポジトリをクローンするようにしているので、以下のように設定しました:
git config --global ghq.root '~/codes'
階層構造での移動を快適にする工夫
ディレクトリが階層構造になることで一つ困ることがあります。それは移動のしにくさです。フラットにリポジトリを並べるのと比べて、パッとcdできないのが不便に感じることがあります。
そんな時は、以下のようなシェル関数を追加しておくと便利です:
fish
function gcd
cd (ghq list -p | fzf)
end
この関数により、ghqで管理しているリポジトリ一覧をfzfの曖昧検索で選択し、一発でジャンプできるようになります。
さらなる効率化のためのエイリアス設定
毎回ghq get --look
を打つのが手間なのと、--look
オプションは忘れがちなので、エイリアスに設定しておくことをおすすめします:
fish
abbr -a ghc ghq get --look
これでghc
でリポジトリをクローンして、すぐにcd
できるようになります🙌
まとめ
ghqを使うことで、以下のメリットが得られました:
- GitHubのURL階層に沿った直感的なディレクトリ構造
- 一発でクローン+移動ができる効率性
- fzf連携による快適なリポジトリ間移動
ローカルリポジトリの整理に悩んでいる方は、ぜひghqを試してみてください。きっと開発環境がより快適になるはずです。
最後までお読みくださりありがとうございました。
Views: 2