.bashrcにgitのショートカットコマンドをつくったでgitのエイリアスコマンドをつくったのですが、中途半端だったので改良しました。
前回のエイリアスでもそこそこにgitコマンドが快適になりましたが、gitコマンドを叩く度にブランチ名をタイプしないといけない仕様は改善すべき点だと思ったので、select
を使って解決しました。
git branch
の値をselect
で回せばいいと思っていたのですが、ブランチ名だけではなくファイル名とか取得されてしまうので加工する必要がありました。
ちょうど同じようなことを実践している記事があり、そちらを参考にさせていただきました。
作ったコマンドは
です。
#!/bin/sh
#checkout a local branch
function gitCheckoutLocalBranch() {
branches=`git branch | grep -v -e"^\*" | tr -d ' '`
PS3="Select branch > "
echo 'Branch list:'
select branch in ${branches}
do
stty erase ^H
git checkout ${branch}
break
done
}
alias g-c=gitCheckoutLocalBranch
# create a new branch and checktout a remote branch
function gitCreateAndCheckoutRemoteBranch() {
branches=`git branch -r | grep -v -e"^\*" | tr -d ' '`
PS3="Select branch > "
echo 'Branch list:'
select branch in ${branches}
do
stty erase ^H
echo -n "What is the new branch name?"
read new_branch_name
git checkout -b ${new_branch_name} ${branch}
break
done
}
alias g-c-b-r=gitCreateAndCheckoutRemoteBranch
# delete a local branch
function gitDeleteLocalBranch() {
branches=`git branch | grep -v -e"^\*" | tr -d ' '`
PS3="Select branch > "
echo 'Branch list:'
select branch in ${branches}
do
stty erase ^H
git branch -D ${branch}
break
done
}
alias g-b-d=gitDeleteLocalBranch
select
で出力される選択肢の色を変えたかったのですが、ちょっとわからなかったので後回しにしました。
今回のソースはgithub - bmf-san/my-scriptsにおいてあります。
#参考
関連書籍