Overview
git 操作を便利にするための設定。
Preparation
Installing Dependencies
ghq, fzf, bat を使うのでインストール。
brew install ghq
brew install fzf
brew install batCreating Files
~/.config/zsh/options.zsh を作成し、 ~/.zshrc で読み込む。
mkdir ~/.config/zsh
touch ~/.config/zsh/aliases.zshsource ~/.config/zsh/aliases.zshSettings
alias gget='ghq get'
alias gcd='cd $(ghq root)/$(_ghq-fzf)'
alias gvi='cd $(ghq root)/$(_ghq-fzf) && vim .'
alias gcode='cd $(ghq root)/$(_ghq-fzf) && code .'
alias ghb="open \$(_ghq-fzf | awk '{print \"https://\"\$1}')"
function _ghq-fzf() {
local src=$(ghq list | fzf --preview "bat --color=always --style=header,grid --line-range :80 $(ghq root)/{}/README.*")
if [ -n "$src" ]; then
echo $src
fi
}
function ghmo() {
local repo=$(_ghq-fzf)
case "$repo" in
*github*)
open $(echo $repo | awk '{print "https://"$1"/pulls"}')
;;
*gitlab*)
open $(echo $repo | awk '{print "https://"$1"/-/merge_requests"}')
;;
*)
echo "No match"
;;
esac
}
function ghmm() {
local repo=$(_ghq-fzf)
case "$repo" in
*github*)
open $(echo $repo | awk '{print "https://"$1"/pulls?q=is:pr+is:closed"}')
;;
*gitlab*)
open $(echo $repo | awk '{print "https://"$1"/-/merge_requests?scope=all&sort=merged_at_desc&state=merged"}')
;;
*)
echo "No match"
;;
esac
}gget: リポジトリを ghq 管理下で clone するgcd: fzf で リポジトリを検索・選択して移動gvi: fzf で リポジトリを検索・選択して vim で開くgcode: fzf で リポジトリを検索・選択して VSCode で開くghb: fzf で リポジトリを検索・選択して ブラウザで開くghmo: fzf で リポジトリを検索・選択してオープン状態のPull Request or Merge Request をブラウザで開くghmm: fzf で リポジトリを検索・選択してマージ済みのPull Request or Merge Request をブラウザで開く