シェルのカスタマイズ
最近でかいプロジェクトで開発していてGit関連の操作が辛くなってきたので, シェルの設定を見直すことにした. とりあえず以下のようなaliasやキーバインドを張ってみた.
[alias] CLEAR = reset --hard HEAD co = checkout sclone = clone --depth 1 pu = !git push -u origin $(git symbolic-ref --short HEAD) refresh= !git fetch origin && git remote prune origin
# zsh function peco-select-branch () { local branch=$(git branch -v --sort=-authordate | peco | cut -c 3- | awk '{ print $1 }') if [ -n "$branch" ]; then if [ -n "$LBUFFER" ]; then local new_left="${LBUFFER%\ } $branch" else local new_left="$branch" fi BUFFER=${new_left}${RBUFFER} CURSOR=${#new_left} fi } zle -N peco-select-branch bindkey '^b' peco-select-branch
それぞれのコマンドの使い方と役割は次の通り.
git CLEAR- ステージ及び作業ディレクトリの状態を
HEADと同じにする - ゴミが残っていて他のブランチにチェックアウトできない時に便利
- 作業ディレクトリの変更が吹き飛ぶ非常に危険なコマンドなので, 大文字にした
- ステージ及び作業ディレクトリの状態を
git co <branch>- ただの
checkoutのalias
- ただの
git sclone <repository>- 最新のコミット以外は取得しない点以外は
git clone <repository>と同じ - サンプルリポジトリなどをcloneするとき, 最新のコミットだけ見れれば良くて過去のコミットは不要なため, こういうコマンドがあると便利
scloneはshallow cloneから
- 最新のコミット以外は取得しない点以外は
git pu- カレントブランチを
originに同じブランチ名で push し, トラッキングする - 一度トラッキングするように設定すれば, 以降は
git pushだけでよくなる
- カレントブランチを
git refreshoriginから fetch した後,originから既に削除されたブランチをローカルリポジトリから削除する- リモートリポジトリで削除したけどローカルリポジトリでは削除せず放置しているとブランチが溜まるので, 定期的にこのコマンドで整理すると良い
peco-select-branch()^bでpecoを使ってブランチを検索できる- ブランチは
- gitのbranch選択をpecoで楽にする。をベースにカスタマイズしている
- 最近作成したブランチが上に来るようにした
- ブランチの最新のコミットのハッシュとコミットメッセージを表示するようにした