高木のブログ

Mac に ghq を導入する

2022/07/20

Mac に ghq を入れた時のメモ書き

ghq handbook にいろいろわかりやすく書いてある

インストール

$ brew install ghq
$ ghq -v
ghq version 1.3.0 (rev:ccbbc18)

リポジトリ取得ディレクトリの設定

デフォルトでは $HOME/ghq になっている

$ ghq root
/Users/ytkg/ghq

自分は普段 $HOME/Workspace を作業用ディレクトリにしているのでそこに変更した

$ git config --global ghq.root '~/Workspace'

反映されていることを確認

$ ghq root
/Users/ytkg/Workspace

~/.gitconfig に設定が追記される

~/.gitconfig
[ghq]
  root = ~/Workspace

SSH を用いてリポジトリを取得する設定

デフォルトでは https でリポジトリを取得するらしい
SSH で取得したいので変更

これは ghq の設定ではなく、git の設定になる

git config --global [email protected]:.insteadOf https://github.com/

~/.gitconfig に設定が追記される

[url "[email protected]:"]
  insteadOf = https://github.com/

リポジトリを取得

$ ghq get ytkg/takagi_blog
$ tree ~/Workspace -L 3
/Users/ytkg/Workspace
└── github.com
    └── ytkg
        └── takagi_blog

リポジトリ一覧

$ ghq list
github.com/ytkg/jmo
github.com/ytkg/kusa
github.com/ytkg/resque
github.com/ytkg/switchbot
github.com/ytkg/takagi-dev
github.com/ytkg/takagi_blog
github.com/ytkg/toggl_to_pixela
github.com/ytkg/tools

peco と組み合わせて瞬時に移動する

$ cd "$(ghq list --full-path | peco)"
QUERY>                                            IgnoreCase [8 (1/1)]
/Users/ytkg/Workspace/github.com/ytkg/jmo
/Users/ytkg/Workspace/github.com/ytkg/kusa
/Users/ytkg/Workspace/github.com/ytkg/resque
/Users/ytkg/Workspace/github.com/ytkg/switchbot
/Users/ytkg/Workspace/github.com/ytkg/takagi-dev
/Users/ytkg/Workspace/github.com/ytkg/takagi_blog
/Users/ytkg/Workspace/github.com/ytkg/toggl_to_pixela
/Users/ytkg/Workspace/github.com/ytkg/tools

sw と入力すると、switchbot のリポジトリだけに絞り込み、エンターキーで移動できる

QUERY> sw                                         IgnoreCase [1 (1/1)]
/Users/ytkg/Workspace/github.com/ytkg/switchbot

これを Ctrl + ] ですぐ移動できるようにした(ハンドブックに書いてあるものをそのまま拝借)

~/.zshrc
peco-src () {
    local repo=$(ghq list | peco --query "$LBUFFER")
    if [ -n "$repo" ]; then
        repo=$(ghq list --full-path --exact $repo)
        BUFFER="cd ${repo}"
        zle accept-line
    fi
    zle clear-screen
}
zle -N peco-src
bindkey '^]' peco-src

ytkg

Written by ytkg, Twitter, GitHub