チームメンバーにブランチ名聞いたり、ブラウザ上でGitHubからブランチ名をコピー/ペーストするのが効率的でなかったので、CLI上で完結できるようにした。ついてにrebaseもする。
最低限のチェックはするようにしている。
hidennotare/switch-git.sh at main · KasuyaMofu/hidennotare · GitHub
#!/bin/bash DEFAULT_BRANCH=main function select-branch(){ git branch -r | awk ' { gsub(/[ \t]/,"", $0); gsub(/.*->/,"", $0); ln[NR]=$0;print NR") " $0 }END{ print "------"; getline n < "/dev/tty"; if(ln[n]==""){print "invalid"; exit} gsub(/[ \t]/,"", ln[n]); system("echo \""ln[n]"\"> ./branch.tmp;") }'; } function check-git-setting(){ local FAULT=0; git config user.name > /dev/null || { echo "please set \"git config --global user.name\"" ; FAULT=1; } git config user.email > /dev/null || { echo "please set \"git config --global user.email\""; FAULT=1; } if [ $FAULT -eq 1 ];then exit; fi } check-git-setting git fetch select-branch if [ ! -f ./branch.tmp ]; then exit; fi echo -n "you selected: " cat ./branch.tmp echo "-----" SELECTED_BRANCH=`cat ./branch.tmp` rm ./branch.tmp git -c advice.detachedHead=false -c status.AheadBehind=false -c branch.autoSetupRebase=always checkout $SELECTED_BRANCH git log --oneline -3
実行はこんな感じ。すごく良い。すごく良いぞ。
$ ../switch-git.sh 1) origin/main 2) origin/bye-audience 3) origin/cache_dashboard 4) origin/main ------ 3 you selected: origin/cache_dashboard ----- HEAD is now at 4cd4ace Cache leaderboard to redis 4cd4ace (HEAD, origin/cache_dashboard) Cache leaderboard to redis 0edfc9d Add go-redis 5d45dd5 Add cache-control in dashboard