こんにちは。Webエンジニアの仁科(@nishina555)です。
みなさん、Git操作はどのように行なっていますか?
Gitといえば、Sourcetreeをはじめとする優れたGUIツールが色々ありますが、エンジニアの方はターミナルで操作をする人が結構いるのではないかと思います。
もし、ターミナルでGitコマンドを叩いているようでしたら、『hub』『ghq』『peco』は知っておいて損はないツールです。
今回は、『peco』『hub』『ghq』を利用した、ターミナルでのGit操作を快適にするための方法について紹介をします。
今回の記事で紹介する内容は以下です。
- 現在の作業リポジトリをブラウザで表示する
- リポジトリの一覧を検索し、ブラウザを表示する
- リポジトリのディレクトリへ移動
目次
各種コマンドの紹介
実例を紹介する前にまずはhub、ghq、pecoの機能について紹介をします。
リポジトリのURLがすぐに開けるhub
hubとはGitHubの操作をコマンドラインから行うためのツールです。
hubには色々なコマンドが用意されていますが、以下の二つは特に使う頻度が多いでしょう。
コマンド | 内容 |
hub browse | リポジトリをブラウザで開く |
hub pull-request | プルリクエストの作成。-bでマージ先ブランチの変更。デフォルトはmaster |
hubを導入することでターミナル上で現在作業しているリポジトリのURLをコマンド一発で開けるようになるので作業効率が一気に捗ります。
リポジトリの管理が楽になるghq
ghqはリポジトリを一元管理してくれるツールです。
ghqを利用することでローカルにcloneされるディレクトリを設定できます。
これにより、色々とリポジトリをcloneしてきてどこになにがcloneされいてるかわからないという問題おこらなくなります。
ghqにも色々なオプションがありますが、よく使うコマンドは以下の二つです。
コマンド | 内容 |
ghq get | ghq get [リポジトリ]で、ghqのrootパスにcloneされる |
ghq list | ghqで管理されているリポジトリのリストを表示。-pでパスを表示 |
ghqの設定は~/.gitconfig
に記載されています。
~/.gitconfig
[ghq]
root = ~/nishina555/git
上記の設定の場合、ghq get hoge/fuga
でcloneしてきたリポジトリは~/nishina555/git/github.com/hoge/fuga
というディレクトリに配置され、ghq list
を実行するとgithub.com/hoge/fuga
と表示されます。
結果一覧をインクリメンタルサーチできるpeco
pecoは結果一覧をインクリメンタルサーチできるツールです。
pecoは一覧を絞り込み検索する機能なので色々な応用ができます。
例えば、ファイル検索の場合、find . | peco
でカレントディレクトリ以下のファイル一覧を絞り込み検索できます。
pecoの使い方については『pecoなしじゃ開発できない!ターミナルの検索を快適にしてくれるpecoの紹介』で紹介をしたので興味のある方はご覧になってください。
Git操作をする上で覚えておくといい活用例
では次にhub、ghq、pecoのコマンドを利用してどういったGit操作が捗るようになるのか、またどのように実現するのかについて紹介をしたいと思います。
なお、実例については『ghq, peco, hubで快適Gitライフを手に入れよう!』の記事を参考にさせていただきました。
結論を先に話すと以下のコマンドに対してエイリアスを貼っておくとGit操作がかなり捗ります。
.zshrc
# 現在の作業リポジトリをブラウザで表示する
alias hbr='hub browse'
# リポジトリの一覧の中からブラウザで表示したい対象を検索・表示する
alias hbrl='hub browse $(ghq list | peco | cut -d "/" -f 2,3)'
# リポジトリのディレクトリへ移動
alias gcd='cd $(ghq root)/$(ghq list | peco)'
では詳しく解説していきます。
事前準備: ツールのインストール
まずは各種ツールのインストールをしておきましょう。
インストール方法ですが、MacであればHomebrewでできます。そのほかのOSについては各リポジトリのREADMEをご参照ください。
$ brew install hub
$ brew install ghq
$ brew install peco
現在の作業リポジトリをブラウザで表示する
リポジトリをブラウザで表示するにはhubを利用します。
さきほども紹介をしましたが作業ディレクトリで以下のコマンドを叩けば一発でリポジトリをブラウザで表示できます。
$ hub browse
リポジトリの一覧の中からブラウザで表示したい対象を検索・表示する
pecoでリポジトリ一覧をインクリメンタルサーチし、最終的に選択したリポジトリをhubに渡してブラウザで表示させるというものです。
コマンドは以下になります。
$ hub browse $(ghq list | peco | cut -d "/" -f 2,3)
ghqで管理されている全リポジトリをghq list
で取得し、pecoに結果を渡しています。
hub browse
の引数で必要なリポジトリ名の部分だけ渡すためcut
コマンドで結果を切り取っています。
リポジトリのディレクトリへ移動
ghqとpecoを組み合わせることでリポジトリ一覧をインクリメンタルサーチし、最終的に選択したリポジトリに移動する方法です。
リポジトリ一覧のインクリメンタルサーチは以下の方法で実現できます。
$ ghq list | peco
上記のコマンドで最終的に選択されたリポジトリをcd
コマンドの引数にすることで対象のリポジトリに移動することができます。
ghq list
はリポジトリ名のみなのでghq root
と組み合わせることでリポジトリのパスを渡すことができます。
最終的なコマンドは以下のようになります。
$ cd $(ghq root)/$(ghq list | peco)
複数のリポジトリを同時に開発する時などに重宝するコマンドです。
まとめ
今回はGit操作が効率的になる『hub』『ghq』『peco』の紹介を終わります。
この記事がいいなと思いましたらツイッター(@nishina555)のフォローもよろしくお願いします!