title | type | published |
---|---|---|
イントロダクション |
tech |
true |
本文書は、コマンドラインツールghq
の使い方を説明するものです。ghq
のメンテナであるSongmu(Masayuki Matsuki)によって書かれています。
本文書のソースコードはMarkdownフォーマットでリポジトリhttps://github.com/Songmu/ghq-handbookから入手できます。
また、本文書の電子書籍をhttps://leanpub.com/ghq-handbookから購入できます。
ghq
はソースコードリポジトリの取得と管理を簡単にするものです。これは以下のシンプルなアイデアによるものです。
ghq get <target>
で何でも簡単にソースコード取得- 柔軟なターゲット指定方式
- 複数のVersion Control System(VCS)を透過的に扱う
- ユニークなディレクトリ構造の強制
go get
を参考にした{{GHQ_ROOT}}/{{HOST}}/{{PATH}}
レイアウト
これは、GOPATH時代のgo get
でのライブラリ取得ルールをGo以外にも適用したものと言えばGoプログラマには分かりやすいでしょう。ghq
を使えば、複数プロジェクトの管理が楽になるだけではなく、気になったOSSを気軽にcloneできますし、リポジトリをアドホックなディレクトリにcloneしてしまい見失ってしまうこともなくなります。
ghq
をpeco
やfzf
等のインタラクティブフィルタツールと組み合わせれば、手元に数百を超えるリポジトリがあっても、瞬時に目的のリポジトリに移動できます。さらに、OSSをカジュアルに手元にcloneできるようになるため、ソースコードリーディングが捗るという嬉しい副作用もあります。実際作者の手元には1000を超えるリポジトリがあります。
ghq
の"gh"はGitHubもしくはgitとhg、qはquickや「急」を意味しています。おそらく。
ghq
はGitHub上のリポジトリhttps://github.com/x-motemen/ghqで開発されています。Goで書かれており、複数OSでの動作を確認しています。公式で、Linux, macOS, Windowsの64bitバイナリビルドを提供しています。
本文書の執筆にあたっては、主に、ghq v1.0.0, macOS 10.15.2, zsh 5.7.1で確認をしていますが、OSやシェル環境による差異は少なくなるように留意しています。
Homebrewでインストール可能です。
% brew install ghq
その他の環境では、GitHub Releasesから実行ファイルを取得できます。
Goの開発環境がある場合、開発リポジトリ( https://github.com/x-motemen/ghq )をgo get
したり、git clone
して自前ビルドすることも可能ですが、ghq
の開発者でも無い限り、タグが打たれた安定ビルドの利用をおすすめします。