yutaponのブログ

javascript界隈の興味あるネタを備忘録的に残しておく場所

git, git-flowの補完とプロンプトにブランチ名を表示する

JS界隈じゃないけどTips的な記事を。
今どきGitを使わないで開発することはないと思うので、
開発しやすいように補完を入れましょう。
それとgit-flowなど、たくさんのブランチを切り替えて開発するときに
便利なのでプロンプトにブランチ名を表示しましょう。

はじめに

MacOSXユーザ向けの記事です。
Homebrewを使っている前提です。


gitを入れる

もう既にインストール済みなら読み飛ばしてください。
gitはhomebrewでさくっと入れましょう。

$ brew install git

gitの補完を入れる

まずはgit-completion.bashというファイルをホームディレクトリに置きます。
homebrewでgitをインストールしている場合、

/usr/local/Cellar/git/1.8.2.3/etc/bash_completion.d/git-completion.bash

↑のあたりに置いてあります。
これをホームにコピーしましょう。

$ cp /usr/local/Cellar/git/1.8.2.3/etc/bash_completion.d/git-completion.bash ~/.git-completion.bash


このgit補完用のファイルをターミナル起動時に読み込むように
.bashrcに追記して、設定を反映させます。

$ echo ~/.git-completion.bash >> ~/.bashrc

$ source ~/.bashrc

これで補完が効くようになりました。
試しに $ git と打ってタブキーを2回押してみるとサブコマンドの一覧が表示されます。

※ もしこのとき初めて .bashrc を生成したのであれば、
 .bashrcがターミナル起動時に自動的に読み込まれていないかもしれないので、
 下記のコマンドを実行してください。

$ echo source ~/.bashrc >> ~/.bash_profile

 

git-flowを入れる

既にインストール済みなら読み飛ばして下さい。
git-flowの説明も詳しくしたいところですが、多人数で開発するときは
とても重宝するのでぜひ導入してほしいです。
nvie/gitflow · GitHub

git-flowは以下のコマンドで一気に入ります。

$ wget --no-check-certificate -q -O - https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sudo bash

※ もしwgetコマンドがまだインストールされていなかったら
 $ brew install wget でインストールしてください。

git-flowの補完を入れる

まずは git-flow用の補完ファイルをローカルに落としてきます。

$ cd ~
$ wget https://raw.github.com/bobthecow/git-flow-completion/master/git-flow-completion.bash
$ mv git-flow-completion.bash .git-flow-completion.bash

落としてきたファイルを .git-flow-completion.bash にリネームしたら、
こちらもターミナル起動時に読み込むようにします。

$ source ~/.git-flow-completion.bash >> ~/.bashrc

$ source ~/.bashrc

これでgit-flowの補完が効くようになりました。


プロンプトにブランチ名を表示させる

やり方は git-completion.bash の中に書いてました。
まずはブランチ名を表示させるためのスクリプトをホームディレクトリに置いて、
bashrcで読みこむように設定します。

$ cp /usr/local/Cellar/git/1.8.2.3/etc/bash_completion.d/git-prompt.sh ~/.git-prompt.sh

$ echo source ~/.git-prompt.sh >> ~/.bashrc

これで準備ができたので、下記の呪文を.bashrcに追記します。

GIT_PS1_SHOWDIRTYSTATE=true

PS1='\[\033[40;1;32m\]\u\[\033[2;32m\]@\[\033[0m\]\[\033[40;32m\]\h \[\033[1;36m\]\w \[\033[31m\]$(__git_ps1 "[%s]")\[\033[00m\] \[\033[0m\]\[\033[40;2;37m\]`date +"%Y/%m/%d %p %H:%M:%S"` \[\033[0m\]\n\\$ '
export PS1=$PS1

色設定が可読性を大きく下げてしまってますが、
$(__git_ps1 "[%s]")という部分がブランチ名の表示にあたります。
あとユーザ名とホスト名とカレントディレクトリのパスと現在時刻を表示する設定なので、長いなーと思ったら何か削って自分好みにしましょう。

保存したら.bashrcを再読込します。

$ source ~/.bashrc

これでgitで管理されているプロジェクトに行くと
プロンプトにブランチ名が表示されるようになります。

f:id:sskyu:20130825194240p:plain


おわりに

プロンプトの設定まわりが読みにくすぎる。
とりあえずこれで快適なgitライフが迎えられるはず。
個人的にはgitのコマンド操作はターミナルでやって、
コミットログとdiffはsourcetreeで見るって感じで作業してます。
Free Mercurial and Git Client for Windows and Mac | Atlassian SourceTree

SourceTreeは無料で使えてGitFlowも対応しててコマンドが苦手な人は
こっちだけでもいいかもしれない。