2012年11月2日金曜日

[git] bashでプロンプトにブランチ名表示したら、git branch叩く回数がめっちゃ減った

背景


gitでブランチをいっぱい切って運用してる場合、ブランチの移動を頻繁に行う。
そして、ちゃんと自分が今何処のブランチで作業しているかを把握していないと、
機能ブランチだと思って、コミットしたらmasterブランチだったとかになってしまう。
結果、git branchを叩きまくることになる

と言っても、やっぱりめんどくさい。
そこで、よくやられていることかもだけど、
プロンプトにブランチ名表示した。
めっちゃ便利。これ使う用になってから、git branch叩く回数が極端に減った。
もう、これないと死ぬ。

参考URL
zsh で Git の作業コピーに変更があるかどうかをプロンプトに表示する方法
Gitとプロンプト変数PS1とbash_completionと

ソース


2つ目の参考URLのやり方だと上手く行かなくて、
いろいろ試行錯誤した結果、下の形に落ち着いた.
やらなきゃいけないことは、.bashrcに以下を書き込めば使えるはず。
ちなみに、indexに変更がある場合は赤、
working treeに変更がある場合は黄色、
なんの変更もない場合は青いろになるようになっている。

#!/bin/bash
# プロンプトにブランチ名表示
function parse_git_branch {
  RED="\e[0;31m"
  YELLOW="\e[33m"
  GREEN="\e[0;32m"
  BLUE="\e[0;34m"
  NONE="\e[0m"

  NOW_BRANCH=$(git symbolic-ref HEAD 2> /dev/null | cut -d/ -f3)
  IND_STAT=$(git status --porcelain 2> /dev/null | grep -v "?" | cut -d" " -f1 )
  WTR_STAT=$(git status --porcelain 2> /dev/null | grep -v "?" | cut -d" " -f2 )

  if [ "${IND_STAT}" != "" ]; then
    [[ ${NOW_BRANCH} ]] && echo -e "${RED}[${NOW_BRANCH}]${NONE}"

  elif [ "${WTR_STAT}" != "" ]; then
    [[ ${NOW_BRANCH} ]] && echo -e "${YELLOW}[${NOW_BRANCH}]${NONE}"

  else
    [[ ${NOW_BRANCH} ]] && echo -e "${BLUE}[${NOW_BRANCH}]${NONE}"

  fi

}
export PS1='\u@\h \w $(parse_git_branch)$ '

0 件のコメント:

コメントを投稿