Bashプロンプト上にgitブランチ名を表示する

実現したい事

gitで管理しているフォルダに滞在している時、どのブランチにいるのか。分かりやすくしたい。具体的なゴールは以下のような見た目にする事です。

gitブランチフォルダを表示

手段

bashシェルの環境変数PS1を書き換える事で実現します。

(PS1変数は、プロンプトの形式を設定する環境変数

 

PS1変数の設定

~/.bashrcに以下のコードを追加します。

PROMPT_COMMAND='update_PS1'
update_PS1() {
    if [ -d ".git" ]; then
        BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
        PS1='\[\e[36m\]\u@\h:\[\e[m\]\[\e[32m\]\w\[\e[m\] \[\e[31m\](${BRANCH})\[\e[m\]\n$ '
    else
        PS1='\[\e[36m\]\u@\h:\[\e[m\]\[\e[32m\]\w\[\e[m\]\n$ '
    fi
}

 

処理の流れは以下になります。

  1. PROMPT_COMMANDに関数(update_PS1)を登録。
  2. update_PS1では、gitで管理しているフォルダか?判定し、PS1変数を設定。

<PROMPT_COMMAND:bashシェルがコマンドを実行する前に行うコマンドを設定>

 

上記を.bashrcに追記する事で、gitで管理しているフォルダに入るとブランチ名も表示されるようになります。

 

動作確認

.bashrcを保存した後、

$ source ~/.bashrc

 

を入力し、変更を有効にしてください。その後、新しいターミナルを開くと実現出来ているはずです。