LoginSignup
0
1

bash, zshにGitのブランチ名をいい感じに表示する(サンプルあり)

Last updated at Posted at 2023-12-28

未来の自分のために、設定方法といくつかサンプルを載せておこうと思います

設定方法

git-prompt.sh のダウンロード

curl -o ~/.git-prompt.sh \
    https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh

git-prompt.sh は、Gitのステータスをプロンプト表示できるツール(Git公式のツール)
ユーザのホームディレクトリにダウンロードします

.bashrc の設定

sudo vi ~/.bashrc
.bashrc
# 以下を追加
if [ -f ~/.git-prompt.sh ]; then
    source ~/.git-prompt.sh
fi
GIT_PS1_SHOWDIRTYSTATE=true 
GIT_PS1_SHOWUNTRACKEDFILES=true
GIT_PS1_SHOWSTASHSTATE=true
GIT_PS1_SHOWUPSTREAM=auto

PS1='\e[32m\u@\h \e[1;34m\w\e[1;31m$(__git_ps1 " (%s)") \e[0m\$ '
source ~/.bashrc

カスタマイズしたプロンプト
image.png

PS1=... のサンプル

ブランチ名の後で改行

PS1='\e[32m\u@\h \e[1;34m\w\e[1;31m$(__git_ps1 " (%s)")\e[0m\n\$ '

image.png

シェルの名前を表示

PS1='\e[32m\s \e[1;34m\w\e[1;31m$(__git_ps1 " (%s)")\e[0m\n\$ '

image.png

日時を表示

PS1='\e[32m\u@h \e[33m\d \@ \e[1;34m\w\e[1;31m$(__git_ps1 " (%s)")\e[0m \$ '

image.png

解説

.bashrc の内容は一見わかりにくいですが、分割すると以下のようになります

image.png

「特殊文字」と「文字装飾」を組み合わせてカスタマイズしています

特殊文字

PS1変数には \u\h など、特殊文字が用意されており、OS情報などを表示できます

特殊文字 詳細
\u ユーザー名
\h ホスト名
\w ホームディレクトリ基準のカレントディレクトリ
\$ $ (rootユーザーでは#)

詳しい内容は、以下が参考になります

文字装飾

\e[...m は、以降の文字装飾を変更しています
... の値によって装飾されます

また、\e[1;31m のように;で区切られたものは
\e[1m(ボールド) と \e[31m(赤文字) を組み合わせたものになります

文字装飾 詳細
\e[32m 緑文字
\e[1;34m 青文字とボールド
\e[1;31m 赤文字とボールド
\e[0m デフォルトにリセット

詳しい設定内容は、以下の「ECMA-48 グラフィクスレンディション(Graphics Rendition)の設定」が参考になります

GIT_PS1_... について

.git-prompt.sh のオプションです
__git_ps1 で表示される内容をカスタマイズできます

環境変数 詳細 表示
GIT_PS1_SHOWDIRTYSTATE unstagedな変更がある時に * を表示
stagedな変更がある時に + を表示
unstaged: (main *)
staged: (main +)
GIT_PS1_SHOWUNTRACKEDFILES untracked filesがある時に % を表示 (main %)
GIT_PS1_SHOWSTASHSTATE stashedがある時に $ を表示 (main $)
GIT_PS1_SHOWUPSTREAM upstream より遅れている時 < を表示
upstream より進んでいる時 > を表示
upstream から分岐している時 <> を表示
upstream と一致している時 = を表示
遅れている: (main <)
進んでいる: (main >)
分岐している: (main <>)
一致している: (main =)
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1