2023年6月28日水曜日

gh と peco でリポジトリ一覧から選択して clone する

はじめに、雑な説明
gh は GitHub 関連の操作がとっても楽になる便利な CLI です。
peco は CUI 上でインタラクティブに候補から出力を選択できるツールです。

各種インストール

エイリアス
.giconfig ファイルに下記を追加します
[alias]
	peco = "!f(){ git peco-$1 ${@:2:($#-1)}; };f"
	peco-clone = "!f(){ gh repo list -L 100 $1 --json nameWithOwner --jq '.[].nameWithOwner' | peco | xargs -I % gh repo clone -u up % ${@:2:($#-1)};};f"
-u up オプションを付けているのは fork リポジトリの場合にデフォルトで upstream が remote に追加されますが、この名前だと gh pr create したときに push する remote を選択するときに upstream が第一候補になってミスりやすいからです
使い方
git peco clone srz-zumix
最後に
今まで git clone するときにいちいち GitHub をブラウザで開いて URL コピペしたりして clone してましたが、gh の登場でかなり簡単に clone できるようになりました。

gh repo clone owner/repo

こうですね。
ただ、新しい PC に引っ越ししたときに環境構築をしていて、↑の方法で clone してたのですが、リポジトリ名なんだっけ?となることがあって(1つの org にいっぱい repo あったりするので・・)、その度にブラウザ開くか、「gh repo list owner」コマンドでリスト出してたんですが、 peco でワンオペにしたらええやんということで生まれました。

この方法であれば owner/organization 名さえ覚えておけば簡単に clone できます。
peco の機能で検索フィルタも書けられるので目当ての repo も探しやすい!

ちなみに GitHub Enterprise の場合は GH_HOST 環境変数でホストを指定すれば対応できますが、私はめんどくさいしつけ忘れてしまうことが多いので gh-do もインストールして下記のエイリアスを登録して使ってます。
alias ghe-do="gh do --hostname=github.hoge.jp --"
e.g.
ghe-do git peco clone xxx

今回は以上です。