Tech Blog - mixross

bashプロンプトにgitブランチ名表示

このエントリーをはてなブックマークに追加
LINE

概要

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:アップストリームの違い(同じか遅れているか進んでいるか)

などがあります。

RSS