DOSプロンプトでgitの現在のブランチ名を表示させる

bashzshではgitの現在のブランチ名を表示させることができます。
そういった記事をよく見かけるんですが、Windows(DOSプロンプト)のケースを見たことがありませんでした。

Windowsでは出来ないのかなと思っていたんですが、一応は出来ることを今日発見。

表示名を変更するbatの作成

:: abn.bat(apply-branch-name)
:: 現在のgitブランチ名をプロンプトとタイトルに適用する

@echo off
:: 現在のブランチ名を取得
for /F "delims=" %%s in ('git symbolic-ref --short HEAD') do @set BRANCH=%%s
:: プロンプト表示名を変更
prompt $P [%BRANCH%] $G
:: プロンプトタイトルを変更
title %BRANCH%

たとえばこういう状態の場合。

C:\app\xampp\htdocs\hogeapp>

masterブランチにいる状態でbatを実行するとこうなります。

C:\app\xampp\htdocs\hogeapp [master] >

foo-featureブランチに移動したあとで実行するとこうなります。

C:\app\xampp\htdocs\hogeapp [foo-feature] >

欠点

ブランチが切り替わったことを検知できるわけではないので、
毎回手動でbatを叩く必要があります。
git checkoutが行われたタイミングでbat実行とかやりたかったけど、 よく分からず。

解決策

「gitの実行」と「batの実行」をラップしたbatを作成します。
gitの操作はすべてそのbat経由にします。

:: wgit.bat(windows-git)
:: gitコマンドへ処理を委譲したあとでabn.batを適用する

git %*

@echo off

abn.bat

こんな感じで使います。

C:\app\xampp\htdocs\hogeapp [master] >wgit commit push origin master

苦肉の策。