peco を使ってブランチのチェックアウトを行う (リモートブランチ と ローカルブランチ)
https://qiita.com/m-tmatma/items/6bb6b7c8a515a5424843 の改良版。
gist
リモートブランチ
スクリプト
coremote () {
remotename=`echo $1 | sed -r "s#([^/]+)/.*#\1#"`
branchname=`echo $1 | sed -r "s#[^/]+/##"`
git branch | grep "..$branchname$"
if [ $? = 0 ]; then
git checkout $branchname
else
git checkout -b $branchname $remotename/$branchname
fi
}
alias cor='export -f coremote; coremote $(git branch -r | grep -v "/HEAD" | peco)'
改善ポイント
- リモートブランチに対応するローカルブランチが存在したら、新たにブランチは作らずに既存ブランチをチェックアウトする。
-
origin/HEAD
の行を除外する。 - xargs をやめて $(コマンド) にした
初版は以下のようにしていた。
alias cor='export -f coremote; git branch -r | grep -v "/HEAD" | peco | xargs -I{} bash -c "coremote {}"'
使い方
$ cor
上下キーあるいは検索文字列を入力してチェックアウトしたいリモートブランチを指定する。
もしローカルに同一名のブランチが存在したらそのローカルブランチをチェックアウトする。
もしローカルに同一名のブランチが存在しなかったリモートブランチを同一名のローカルブランチを作成してチェックアウトする。
ローカルブランチ
スクリプト
colocal () {
branchname=`echo $1 | sed -r "s#^../##"`
git checkout $branchname
}
alias col='export -f colocal; colocal $(git branch | peco)'
改善ポイント
- xargs をやめて $(コマンド) にした
初版は以下のようにしていた。
alias col='export -f colocal; git branch | peco | xargs -I{} bash -c "colocal {}"'
使い方
$ col
上下キーあるいは検索文字列を入力してチェックアウトしたいローカルブランチを指定する。