tl;dr
bash + git環境で開発中にいまのブランチがわからなくなって、いちいちgit status
をたたいて状態確認するのがめんどうでたまらない人向けに、プロンプトにgitのブランチ名と作業ツリーの状態を表示させる方法をまとめます。
用意するもの・動作確認環境
bashならどんな環境でも動くはずですが、わたしの環境は下記の通り。
- Windows 10 Pro
- WSL2 (Windows Subsystem for Linux 2)
- Ubuntu 20.04.2 LTS
結論
.bashrcに下記のように記述する。
# for prompt
source ~/.git-completion.bash
source ~/.git-prompt.sh
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWUNTRACKEDFILES=true
GIT_PS1_SHOWSTASHSTATE=true
GIT_PS1_SHOWUPSTREAM=auto
PS1="\[\e[1;32m\]\u@\h\[\e[m\]:\[\e[1;34m\]\W\[\e[m\]\[\e[33m\]\$(__git_ps1)\[\e[m\]\$ "
プロンプトが下記のようになる。
user_name@machine_name:directory(branch_name branch_status)$
導入方法
git-completion.bash
、git-prompt.sh
を取得して、.bashrcを編集するだけでok。
$ wget https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -O ~/.git-completion.bash
$ wget https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh -O ~/.git-prompt.sh
取得するシェルスクリプト
git-completion.bashとは
gitコマンドの補完スクリプト。
git-prompt.shとは
プロンプトに各種追加情報を表示可能にするスクリプト
設定値の解説
環境変数
設定値 | 意味 |
---|---|
GIT_PS1_SHOWDIRTYSTATE=true | addされていない変更の存在を「*」で示す commitされていない変更の存在を「+」で示す |
GIT_PS1_SHOWUNTRACKEDFILES=true | addされていない新規ファイルの存在を「%」で示す |
GIT_PS1_SHOWSTASHSTATE=true | stashがある場合は「$」で示す |
GIT_PS1_SHOWUPSTREAM=auto | upstreamと同期している場合は「=」で示す upstreamより進んでいる場合は「>」で示す upstreamより遅れている場合は「<」で示す |
PS1
設定値 | 意味 |
---|---|
\u | ユーザ名 |
\h | ホスト名 |
\W | カレントディレクトリ |
\w | カレントディレクトリのパス |
\n | 改行 |
\d | 日付 |
\[ | 表示させない文字列の開始 |
\] | 表示させない文字列の終了 |
\$ | $ |
1;32などの数字 | 表示色指定 |
わたしのPS1は一例です。
他にもいろいろ設定できるので、ご自分の好みの設定をみつけてください。
参考URL