gitのcommit、push待ちの状態をプロンプトに表示すると結構便利
gitのブランチ名をプロンプトに表示すると結構便利 の続き。
gitでcommitし忘れ、pushし忘れないように、
_color_() { color=$1; shift echo -e "\e[${color}${@}\e[0m" } fg_black() { _color_ "30m" $@; } fg_BLACK() { _color_ "30;1m" $@; } fg_red() { _color_ "31m" $@; } fg_RED() { _color_ "31;1m" $@; } fg_green() { _color_ "32m" $@; } fg_GREEN() { _color_ "32;1m" $@; } fg_yellow() { _color_ "33m" $@; } fg_YELLOW() { _color_ "33;1m" $@; } fg_blue() { _color_ "34m" $@; } fg_BLUE() { _color_ "34;1m" $@; } fg_magenta() { _color_ "35m" $@; } fg_MAGENTA() { _color_ "35;1m" $@; } fg_cyan() { _color_ "36m" $@; } fg_CYAN() { _color_ "36;1m" $@; } fg_white() { _color_ "37m" $@; } fg_WHITE() { _color_ "37;1m" $@; } fg_BOLD() { _color_ "1m" $@; } fg_inverse() { _color_ "7m" $@; } fg_INVERSE() { _color_ "1;7m" $@; } gitmodified() { check_remote="n" case $1 in -[vr]) check_remote="y" ;; esac fg_INVERSE '= list branches =' git branch -a fg_INVERSE '= working tree status =' git status echo 'try git diff' if [ "$check_remote" = 'y' ]; then if git config -l | grep svn.url; then fg_INVERSE '= remote =' git-svn dcommit -n else fg_INVERSE '= remote =' if [ -z "$(git log --pretty=oneline origin..HEAD)" ]; then echo "up to date" else fg_RED "NEED TO PUSH!!" git log --name-status --pretty=oneline --abbrev-commit origin..HEAD echo; echo "try:"; echo " git diff origin..HEAD" fi fi fi }
なのを使って、こんなふうに確認していたのですが、
いちいち打つのがめんどくさくなってきたのでプロンプトに表示するようにしてみました。こんな感じ:
上から順に:
- commit待ちもpush待ちもないので最初のプロンプトはいつもと同じ。
- ファイルt1を変更したので、commit待ちを示す「*」がプロンプトに表示されている。
- commitしたので、「*」が消えて、push待ちを示す「^」が表示されている。
- 再びファイルt1を変更したので、「^」に加えてcommit待ちを示す「*」も表示されている。
プロンプト表示する度に git コマンドとかとか叩いてるんでちょっとあれですけど、便利に使ってます。
__git_reminder() { [ -d "$PWD/.git" ] || return M= git status | grep -q '^nothing to commit' 2>/dev/null || M=$M'*' [ ! -z "$(git log --pretty=oneline origin..HEAD 2>/dev/null)" ] && M=$M'^' echo -n "$M" } #... _colesc="\[\e[" _cse="\]" _colreset="${_colesc}0m${_cse}" if [ -r "$HOME/.bash_completion.d/git" ]; then PS1="${PS1}[\$(__git_ps1 \"${_colesc};1m${_cse}%s${_colesc}31;1m${_cse}\$(__git_reminder)${_colreset})\")\w]\\$ " else PS1="${PS1}[\w]\\$ " fi #...