前フリ
私がはじめて Git を使ったのは Windows の環境でした。基本的には gitk などの GUI は使わずにコマンドでの操作をメインに覚えました。そのときから私はずっと GitBash を使っており、私と git との歩みは常に傍に GitBash が居たと言っても過言ではありません。
ということで私は GitBash の配色や見た目にすっかり慣れてしまい、他の環境(Macでの作業時や、Linuxのサーバー作業)でも同じようなプロンプトで作業したいと考えるようになったわけです。そもそもデフォルトのプロンプトは個人的に見辛いというのもあります。
やっぱこれですね。わたしはもうこれじゃなきゃだめな体になってしまったようです(;´Д`)ハァハァ
検索してみると、いろんな先人の方々がプロンプトの見た目をカスタムしている事例を見かけました。ただ、GitBash っぽい見た目をゴールにしている(奇特な)例は見た感じなかったので今回は改造例のひとつということで紹介したいとおもいます。
Git 環境
以下の2つで検証済みです。どっちでもいけます。
- MacBook(git version 2.19.0)
- CentOS(6.x系)のサーバー(git version 1.8.3.1)
必要ファイルの準備
この2つを準備しましょう。
- git-completion.bash
- git-prompt.sh
Mac では Homebrew で git をインストールしている場合、一緒にダウンロードされるようです。
私の環境では下記にありましたので一度確認してみてください。
/usr/local/etc/bash_completion.d/git-prompt.sh
/usr/local/etc/bash_completion.d/git-completion.bash
もしなければネットにあるのでダウンロードしてきましょう。
保存場所は任意のフォルダでOKです。私は安直に自分のユーザー直下に落としましたw
一応ファイル名の頭に .
をつけて隠しファイルにしておきます。
$ wget https://raw.github.com/git/git/master/contrib/completion/git-completion.bash -O .git-completion.bash
$ wget https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh -O .git-prompt.sh
設定ファイルを変更
下記の記述を .git-prompt.sh と .git-completion.bash のパスを前項で取得したものに書き換えた上で、.bash_profile
や .bashrc
等に追加してください。
# prompt settings
source {%.git-prompt.sh のパス%}
source {%.git-completion.bash のパス%}
HOST='\u@\h'
PS1="\[\033]0;$HOST\007\]" # set window title
PS1="$PS1"'\n' # new line
PS1="$PS1"'\[\033[32m\]' # change color
PS1="$PS1"'\u@\h ' # user@host<space>
PS1="$PS1"'\[\033[33m\]' # change color
PS1="$PS1"'\w' # current working directory
if test -z "$WINELOADERNOEXEC"
then
PS1="$PS1"'\[\033[36m\]'
PS1="$PS1"'$(__git_ps1)' # bash function
fi
PS1="$PS1"'\[\033[0m\]' # change color
PS1="$PS1"'\n' # new line
PS1="$PS1"'$ ' # prompt: always $
設定のネタ元は Git for Windows インストール時に手元に出来た C:\Program Files\Git\etc\bash.bashrc
の内容です。これをベースにちょこちょこ変えてます。
設定の反映
お使いのターミナルを起動しなおすか、source
コマンドで設定を再読み込みしてください。
完成図
before
after
YESSS!!!
ほぼ GitBash やん。控え目に言って最高かよ(自己満
ちなみに GitBash にはあった MINGW64
の部分は特に必要なかったので移植する際にはプロンプトからカットしました。
以上です。よろしければパクって使ってやってください。