Git
目次 ▾ 第2版

A1.8 付録A: 他の環境におけるGit - PowerShellにおけるGit

PowerShellにおけるGit

Windowsの従来のコマンドラインターミナル(`cmd.exe`)では、カスタマイズされたGitエクスペリエンスを実現できませんが、PowerShellを使用している場合は問題ありません。これは、LinuxまたはmacOSでPowerShell Coreを実行している場合にも有効です。posh-git(https://github.com/dahlbyk/posh-git)と呼ばれるパッケージは、強力なタブ補完機能と、リポジトリの状態を把握するのに役立つ拡張プロンプトを提供します。以下のような表示になります。

PowerShell with Posh-git
図187. Posh-gitを使用したPowerShell

インストール

前提条件(Windowsのみ)

マシンでPowerShellスクリプトを実行するには、ローカルの`ExecutionPolicy`を`RemoteSigned`に設定する必要があります(基本的に`Undefined`と`Restricted`を除くすべて)。`RemoteSigned`ではなく`AllSigned`を選択した場合、ローカルスクリプト(独自のスクリプト)もデジタル署名されていなければ実行できません。`RemoteSigned`の場合、`ZoneIdentifier`が`Internet`に設定されているスクリプト(Webからダウンロードされたスクリプト)のみ署名が必要で、それ以外は署名する必要がありません。管理者権限があり、そのマシンのすべてのユーザーに対して設定する場合は、`-Scope LocalMachine`を使用します。管理者権限のない通常のユーザーの場合は、`-Scope CurrentUser`を使用して自分自身のみの設定を行います。

PowerShellのスコープの詳細については、https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_scopesを参照してください。

PowerShellのExecutionPolicyの詳細については、https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicyを参照してください。

すべてのユーザーに対して`ExecutionPolicy`の値を`RemoteSigned`に設定するには、次のコマンドを使用します。

> Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned -Force

PowerShell 5以降、またはPackageManagementがインストールされているPowerShell 4以降を使用している場合は、パッケージマネージャーを使用してposh-gitをインストールできます。

PowerShellギャラリーの詳細については、https://learn.microsoft.com/en-us/powershell/scripting/gallery/overviewを参照してください。

> Install-Module posh-git -Scope CurrentUser -Force
> Install-Module posh-git -Scope CurrentUser -AllowPrerelease -Force # Newer beta version with PowerShell Core support

posh-gitを全ユーザーにインストールする場合は、代わりに-Scope AllUsersを使用し、管理者権限を持つPowerShellコンソールからコマンドを実行してください。「Module 'PowerShellGet' was not installed by using Install-Module」のようなエラーで2番目のコマンドが失敗した場合は、先に別のコマンドを実行する必要があります。

> Install-Module PowerShellGet -Force -SkipPublisherCheck

その後、再度試すことができます。これは、Windows PowerShellに付属するモジュールが異なる発行証明書で署名されているため発生します。

PowerShellプロンプトの更新

プロンプトにGit情報を表示するには、posh-gitモジュールをインポートする必要があります。PowerShellの起動時に毎回posh-gitをインポートするには、Add-PoshGitToProfileコマンドを実行します。これにより、インポートステートメントが$profileスクリプトに追加されます。このスクリプトは、新しいPowerShellコンソールを開くたびに実行されます。複数の$profileスクリプトがあることに注意してください。たとえば、コンソール用とISE用で別々のスクリプトがあります。

> Import-Module posh-git
> Add-PoshGitToProfile -AllHosts

ソースから

https://github.com/dahlbyk/posh-git/releasesからposh-gitリリースをダウンロードして解凍します。その後、posh-git.psd1ファイルへのフルパスを使用してモジュールをインポートします。

> Import-Module <path-to-uncompress-folder>\src\posh-git.psd1
> Add-PoshGitToProfile -AllHosts

これにより、profile.ps1ファイルに適切な行が追加され、次回PowerShellを開いたときにposh-gitが有効になります。

プロンプトに表示されるGitステータスサマリー情報の説明については、https://github.com/dahlbyk/posh-git/blob/master/README.md#git-status-summary-informationをご覧ください。 posh-gitプロンプトのカスタマイズ方法の詳細については、https://github.com/dahlbyk/posh-git/blob/master/README.md#customization-variablesをご覧ください。

scroll-to-top