Tech Blog - mixross
概要
bashプロントとはターミナルで
[user@hostname ~] $
のように入力部分の手前に表示されているものを指します。
ユーザ名やホスト名以外に日付なども出力できたり、色をつけれたりとカスタマイズできます。
今回はここにカレントディレクトリがgitリポジトリ内だった場合にブランチ名を表示させます。
ブランチをちょくちょく変えていると今どのブランチだっけ?という時にわざわざgit branchやgit statusで確認するわけですが、その必要が無くなり地味に便利です。
Macの現在の設定を確認
bashプロンプトのフォーマットは環境変数PS1に設定されています。
hostname:directory user$ echo $PS1
\h:\W \u\$
それぞれのキーワードの意味は
キーワード | 意味 |
---|---|
\h | ホスト名 |
\w | カレントディレクトリ名 |
\u | ユーザ名 |
$ | $(rootユーザの場合は#) |
その他のキーワードや色の付け方はここを参考
gitのライブラリを検索
$ sudo find / -name git-prompt.sh
/Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh
$ sudo find / -name git-completion.bash
/Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
.basrcを編集
上で調べた2つのシェルを呼び出し、環境変数PS1を設定します。 「$(__git_ps1)」の部分がブランチ名を表示するキーワード。
~/.bashrc
source /Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh
source /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bash
export GIT_PS1_SHOWUNTRACKEDFILES=true
export GIT_PS1_SHOWDIRTYSTATE=true
export PS1='\h:\W \u$(__git_ps1)\$ '
保存後
$ source ~/.bashrc
で設定を反映させると
hostname:directory user(master)$
のようにブランチ名が表示されるようになります。
GIT_PS1_SHOWUNTRACKEDFILES=true
を設定しておくとaddしていない新規のファイルがある場合は「%」を表示してくれるようになります。
hostname:directory user(master %)$
GIT_PS1_SHOWDIRTYSTATE=true
を設定しておくと変更状態を表示してくれるようになります。
addしていない変更がある場合は「*」が表示されます。
hostname:directory user(master *)$
addしているがcommitされていないものがある場合は「+」が表示されます。
hostname:directory user(master +)$
他にも
- GITPS1SHOWSTASHSTATE:スタッシュの有無を表示
- GITPS1SHOWUPSTREAM:アップストリームの違い(同じか遅れているか進んでいるか)
などがあります。