問題
- 開発用のターミナルとして
Windows Terminal(PowerShell)使っているけどブランチ名が表示されない。 - 現在のブランチをいちいち確認する手間を省きたい
解決策
dahlbyk/posh-git: A PowerShell environment for Gitを使う
環境確認
Windows Terminalを開いたら次のコマンドを実行して、現在のPowerShellのバージョンを確かめる。
$ $PSVersionTable.PSVersion
このコマンドを実行すると、下記のようにPowershellのバージョンが確認できる。

README.mdを読んでみると5.x系のバージョンであれば、このまま進めていって良さそうなので次に進む。
posh-gitのインストール
管理者として実行でWindows Terminalを開きなおし、次のコマンドを実行する。
$ PowerShellGet\Install-Module posh-git -Scope CurrentUser -AllowPrerelease -Force
このように(↓)AllowPrereleaseが認識されなかったら、PowerShellGetのバージョンが要件以下という事。

次のコマンドを実行してNuGetをインストールし、PowerShellGetにおける更新の準備を行う。
$ Install-Module PowerShellGet -Scope CurrentUser -Force -AllowClobber
NuGetをインストールできたら、PowerShellGetがインストールされているかどうかを次のコマンドで確かめる。
$ Install-Module -Name PowerShellGet -Force
ならPowerShellGetの更新を。
$ Update-Module -Name PowerShellGet
今までの設定を反映してもらうために一回閉じる。
準備ができたところで改めてposh-gitをインストール。
$ PowerShellGet\Install-Module posh-git -Scope CurrentUser -AllowPrerelease -Force
posh-gitを使う
インストールしても、それをPowerShellに認識してもらったり使えるようにしてもらったりしなければ、ただそこにあるだけ。
ということで、インストールしたposh-gitを使えるようにするための設定をしていく。
まずは次のコマンドを実行し、posh-gitをPowerShellに認識してもらう。
$ Import-Module posh-git
「これで完了かな?」と思い管理者以外のユーザーで開いてみると、posh-gitが使えていなかった。

ということで、Windows Terminalを開けば自動でposh-gitが読み込まれたり管理者以外のユーザーでも使えるようにしたりするために次のコマンドを入力していく。
$ Add-PoshGitToProfile
$ Add-PoshGitToProfile -AllHosts
$ Add-PoshGitToProfile -AllUsers -AllHosts
-
Add-PoshGitToProfile:Windows Terminalを開けば自動でposh-gitが読み込まれるようにする。 -
Add-PoshGitToProfile -AllHosts: 他のPowerShellホストでもposh-gitが使えるようにする。 -
Add-PoshGitToProfile -AllUsers -AllHosts: 全てのユーザーがposh-gitを使えるようにする。
Add-PoshGitToProfile -AllUsers -AllHostsの適用には-Forceパラメーターが必要という警告が出ることもある。
その場合は次のコマンドを実行する。
$ Add-PoshGitToProfile -AllUsers -AllHosts -Force
管理者以外のユーザーでWindows Terminalを開き、posh-gitが読み込まれているかを確かめる。
posh-gitのカスタマイズ
posh-gitではブランチ名だけでなく、表示カスタマイズなどもできる。
次のコマンドで設定一覧を確認できる。
$ $GitPromptSettings
変更したい設定は**$GitPromptSettings.項目名**で変更する。
自分が実行したのは次のコマンド達。
$ $GitPromptSettings.DefaultPromptAbbreviateHomeDirectory = $false
$ $GitPromptSettings.DefaultPromptPath.ForegroundColor = 'Orange'
$ $GitPromptSettings.DefaultPromptBeforeSuffix.Text = '`n'
$ $GitPromptSettings.DefaultPromptBeforeSuffix.Text = '`n$([DateTime]::now.ToString("MM-dd HH:mm:ss"))'
$ $GitPromptSettings.DefaultPromptBeforeSuffix.ForegroundColor = [ConsoleColor]::Magenta
$GitPromptSettings.を省略して解説。
-
~.DefaultPromptAbbreviateHomeDirectory = $false: 現在のディレクトリ以外のパスを~で省略しない -
~.DefaultPromptPath.ForegroundColor = 'Orange': 現在のパスをオレンジ色に。 -
~.DefaultPromptBeforeSuffix.Text = '‘n': パス名とコマンド入力欄の間に改行を入れる。(`の代わりに‘を使用しています。) -
~.DefaultPromptBeforeSuffix.Text = '‘n$([DateTime]::now.ToString("MM-dd HH:mm:ss"))': コマンド入力欄の前に現在の時刻を表示する。(`の代わりに‘を使用しています。) -
~.DefaultPromptBeforeSuffix.ForegroundColor = [ConsoleColor]::Magenta: 現在の時刻をマゼンタ色で表示する。
この他にも設定できる箇所はあり、それらはposh-gitのREADME.mdで解説されている。
自分に合ったposh-gitを設定して使いこなそう!!




