🐁

【Git】PowerShell をカスタマイズして作業中のブランチ名を表示しよう

2024/12/06に公開

はじめに

PowerShell で Git 操作を行う際に

「今自分がどのブランチで作業しているかわからない」
「作業中のブランチを git branch で確認する」

ということがあると思います。
こんな感じ ↓

カスタマイズ前

PowerShell の Profileを用いて、カスタマイズ ( ブランチ名の表示など ) を行うことで git branch せずとも作業ブランチ名が表示されるようになります。

こんな感じ ↓

カスタマイズ後

PowerShellプロファイルとは

  • PowerShellセッション開始時に自動実行されるスクリプトファイル
  • 個人のカスタム設定( エイリアス、関数、環境変数など )を保存する

プロファイルにエイリアス等を記述することで永続化!

プロファイルの確認

プロファイルが存在するか確認

Test-Path $PROFILE

プロファイルの作成

存在しない場合は以下で作成

if (!(Test-Path -Path $PROFILE)) {
    New-Item -ItemType File -Path $PROFILE -Force
}

プロファイルの編集

作成されたプロファイルを編集

notepad $PROFILE

ブランチ名の表示

ブランチ名の取得

現在の Git ブランチ名を取得する関数を定義

function Get-GitBranch {
    try {
        # 現在のブランチ名を取得
        $branch = git rev-parse --abbrev-ref HEAD 2>$null
        if ($branch) {
            return $branch.Trim()
        }
    } catch {
        # Gitコマンドが失敗した場合、空文字列を返す
        return ""
    }
}

ブランチ名を表示

Prompt関数に最終的な処理を記述

# プロンプトのカスタマイズ
function Prompt {
    # カレントディレクトリのパスを取得
    $currentPath = Get-Location

    # ブランチ名を取得
    $branch = Get-GitBranch

    # プロンプトを設定
    "$currentPath ($branch)> "
}

整える

ディレクトリとブランチ名を角括弧で囲んでみる

function Prompt {
    # カレントディレクトリのパスを取得
    $currentPath = Get-Location

    # ブランチ名を取得
    $branch = Get-GitBranch

    # プロンプトを設定
    "[$currentPath][$branch] > "
}

色を付ける

function Prompt {
    # カレントディレクトリのパスを取得
    $currentPath = Get-Location

    # ブランチ名を取得
    $branch = Get-GitBranch

    Write-Host "[" -NoNewline
    Write-Host $currentPath -NoNewline -ForegroundColor Cyan
    Write-Host "]" -NoNewline

    if($branch){
        Write-Host "[" -NoNewline
        Write-Host $branch -NoNewline -ForegroundColor Magenta
        Write-Host "]" -NoNewline
    }

    return " > "
}

おまけ

  • タブ名をディレクトリにする
  • 時刻を表示 ( 飾り程度
  • 改行を加えて見やすくする
function Prompt {
    # カレントディレクトリのパスを取得
    $currentPath = Get-Location

    # タイトルバーに現在のフォルダ名を表示
    $Host.UI.RawUI.WindowTitle = Split-Path -Leaf $currentPath

    # パス表示
    Write-Host ""  
    Write-Host "[" -NoNewline
    Write-Host $currentPath -NoNewline -ForegroundColor Cyan
    Write-Host "]" -NoNewline

    # ブランチ名を取得
    $branch = Get-GitBranch
    if ($branch) {
        Write-Host "[" -NoNewline
        Write-Host $branch -NoNewline -ForegroundColor Magenta
        Write-Host "]" -NoNewline
    }

    # 現在の日時を表示
    $now = Get-Date -Format "yyyy/MM/dd HH:mm"
    Write-Host "`n$now"

    return " > "
}

Thinkingsテックブログ

Discussion