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
