カレーのライスをtech忘れ

odmishienのtechメモ

ghqとanyframeで快適にGitリポジトリを管理する

研究室のScrapBoxに書いたものを転載!!!

想定環境としては

です

なにが快適になるか

  • git clone をどこにしようか迷う必要がなくなる
  • git clone したものをどこに保存していたか分からなくなることがなくなる

ghqとは

  • Goで実装されたリポジトリ管理ツール
  • イントロダクションや使い方はハンドブックを参考にしてください
  • anyframe導入してしまったら主に使うコマンドは ghq get <repositoryのURL> くらいです

Goをインストールする

  • Goで実装されているのでGoがまだ入っていなければインストールが必要です
    • 個人的にはgoenvを使ってバージョン管理するのがおすすめです
    • とはいえ, ghqのためにしかGoを使わないのであればbrew isntall go で十分な気がする
  • $GOPATH というものを設定する必要がある
    • zsh を使ってる場合は.zprofileとかに以下の設定を書いておく
export GOPATH=~/.go
export PATH=$PATH:$GOPATH/bin

source .zprofile などして設定を反映しておく

ghqをインストールする

brew install ghq で入る(Windowsは知らん!)

anyframeをインストールする

リスト表示する系コマンドの出力結果を受け取ってインタラクティブに選択させてくれるやつ
リスト表示 -> 絞り込み -> 選択 -> 実行の4ステップをシームレスにつなぐにくいやつ
現代CLIの革命児

  • 今回は ghq で取得してきたリポジトリキーバインドを入力するだけで検索&目的のリポジトリがあるディレクトリまで移動を実現するために使います

  • brew install peco を実行

    • anyframeが使う peco というツールをインストールする
  • mkdir ~/.zsh を実行して、anyframeを入れておくディレクトリを作成する

  • cd ~/.zsh.zshの中に入って git clone https://github.com/mollifier/anyframe.git を実行

  • ~/.zshrc の適当な場所に以下を追記

fpath=($HOME/.zsh/anyframe(N-/) $fpath)
autoload -Uz anyframe-init
anyframe-init
  • source ~/.zshrc などして 設定を反映

anyframeの便利キーバインドを設定する

  • この辺からは好みが出てくると思いますので 私 の環境を参考程度に貼っておきます
  • 再び ~/.zshrc に書いていく
bindkey '^xr' anyframe-widget-execute-history
bindkey '^x^r' anyframe-widget-execute-history

bindkey '^xp' anyframe-widget-put-history
bindkey '^x^p' anyframe-widget-put-history

bindkey '^xg' anyframe-widget-cd-ghq-repository
bindkey '^x^g' anyframe-widget-cd-ghq-repository

bindkey '^xk' anyframe-widget-kill
bindkey '^x^k' anyframe-widget-kill

bindkey '^xi' anyframe-widget-insert-git-branch
bindkey '^x^i' anyframe-widget-insert-git-branch

bindkey '^xf' anyframe-widget-insert-filename
bindkey '^x^f' anyframe-widget-insert-filename
  • bindkey の後ろにあるキーバインドで その後ろに書いてあるようなことが実行される

  • 例えばよく使うものだと

    • ^x^g or ^xg : ghqリポジトリを一覧表示&検索&選択したらそのリポジトリに移動
    • ^x^r or ^xr : ターミナルで実行したコマンドの履歴を一覧表示&検索&選択したらそのコマンドを実行
    • ^x^p or ^xp : ターミナルで実行したコマンドの履歴を一覧表示&検索&選択したらそのコマンドを呼び出す(実行はされない)
      • さっき使ったコマンドをちょっと変更して実行したいときとかに使います

まとめ

これからgitリポジトリを管理する流れとしては

という流れで自分が今どのディレクトリにいるのか、repositoryはどこに保存されているのかなどを気にせずに作業ができる!!

参考サイト