̃Gg[͂ĂȃubN}[Nɒlj

git :: bash プロンプトにブランチ名と作業ツリーの状態を表示する



「git status」「git branch」を日々数え切れないくらいタイプしている。
エイリアスで「git st」「git br」として、タイプ数を少なくしていたが、それでも手間だ。
ブランチ名と作業ツリーの状態をプロンプトに表示することで、そこそこ捗ります。


プロンプトの表示サンプル

bash プロンプトに水色で表示されているのが、ブランチ名です。
 ⇒ master ブランチで作業していることが分かります。

  • クリーンな状態(差分がない状態)

クリーンな状態(差分がない状態)

  • add されていない変更の存在を「*」で示す
    • git status → Changes not staged for commit

add されていない変更がある

  • add されていない新規ファイルの存在を「%」で示す
    • git status → Untracked files

add されていない新規ファイルがある

  • commit されていない変更の存在を「+」で示す
    • git status → Changes to be committed

commit されていない変更がある場合

  • 複数の変更がある場合はすべてを示す


設定の仕方

1)まず「git-completion.bash」と「git-prompt.sh」ダウンロードします。

$ wget https://raw.github.com/git/git/master/contrib/completion/git-completion.bash
$ wget https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh


2).bashrc に下記を追記します。

PS1="\[\033[1;32m\]\$(date +%Y/%m/%d_%H:%M:%S)\[\033[0m\] \[\033[33m\]\H:\w\n\[\033[0m\][\u@ \W]\[\033[36m\]\$(__git_ps1)\[\033[00m\]\$ "

#
# git-completion.bash / git-prompt.sh
#
if [ -f /path/to/git-completion.bash ]; then
    source /path/to/git-completion.bash
fi
if [ -f /path/to/git-prompt.sh ]; then
    source /path/to/git-prompt.sh
fi
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWUNTRACKEDFILES=true
GIT_PS1_SHOWSTASHSTATE=true
GIT_PS1_SHOWUPSTREAM=auto
  • PS1= : 二段プロンプトが好みでない場合は、お好きにカスタマイズしてください。
  • /path/to : 環境にあわせて適宜変更してください。
  • GIT_PS1_SHOWDIRTYSTATE=true
    • add されていない変更の存在を「*」で示す
    • commit されていない変更の存在を「+」で示す
  • GIT_PS1_SHOWUNTRACKEDFILES=true
    • add されていない新規ファイルの存在を「%」で示す
  • GIT_PS1_SHOWSTASHSTATE=true
    • stash がある場合は「$」で示す
  • GIT_PS1_SHOWUPSTREAM=auto
    • upstream と同期している場合は「=」で示す
    • upstream より進んでいる場合は「>」で示す
    • upstream より遅れている場合は「<」で示す


3)source コマンドで設定を反映します。

$ source ~/.bashrc





unix/command/git/bash_prompt.txt