ハトネコエ Web がくしゅうちょう

プログラミングやサーバー・Web制作、チームマネジメントなど得た技術のまとめ

Windows PowerShell 使いは posh git を入れよう

入れるとどう便利になるかって言うと、
GitHub Shell っぽい表示になります。
f:id:nekonenene:20150911012358p:plain

ブランチ名、コマンド名をTabキーで補完してくれるようにもなります。
なかなか便利。
詳しくは以下をご覧ください。

PowerShell で Git : @jsakamoto

上の記事ではインストール方法をあまり詳しく説明していないので少し説明。
Posh-Git の配布元の ReadMe でも丁寧に説明してあるので、そちらでもいいかもしれません。

Git Bash(Git for Windows)GitHub for Windows がすでにインストール済みで、
環境変数に git.exe のあるフォルダへのPATHが通してあることを前提とします。

1. RemoteSigned に PowerShell の設定を変更


以前のこの記事もご覧ください。

WindowsPowerShellを「管理者で実行」して、Set-ExecutionPolicyコマンドを実行。
その後

コマンド パイプライン位置 1 のコマンドレット Set-ExecutionPolicy
次のパラメーターに値を指定してください:
ExecutionPolicy:

という文章が出てくるので、RemoteSignedと入力してEnter。

は、やっていない方はやっておかないと、Posh-Git が使えません。
Get-ExecutionPolicy コマンドを実行して、現在のオプションが RemoteSignedになっているか確認しておきましょう。

2. Posh-Git をインストール

以下のコマンドを1行ずつ実行していきます。
(繰り返しますが、git の初期設定・SSH鍵の生成が終わっていることを前提としています)

git clone git@github.com:dahlbyk/posh-git.git
(ダウンロードが終わるまでしばらく待つ)
cd posh-git
.\install.ps1

これが終わると、ドキュメントフォルダの「WindowsPowerShell」フォルダに
Microsoft.PowerShell_profile.ps1」というファイルができていると思います。
そうしましたらインストール完了です。

しかし、「よし終わった!」と思って、
先ほど clone した posh-git フォルダを削除すると、動かなくなってしまいます。

3. posh-git フォルダを消しても動くようにする

どうして動かなくなるかといえば簡単で、先ほどの
Microsoft.PowerShell_profile.ps1」の中身をテキストエディタで見てもらえば、

# Load posh-git example profile
. 'C:\posh-git\profile.example.ps1'   # <= clone した場所により異なります

と書かれているのが確認できると思います。
つまり、clone したディレクトリを参照しているため、削除すると動かなくなってしまうのです。

これを解決するには、profile.example.ps1 を適当な場所にコピーしてくればOKです。
私は「WindowsPowerShellディレクトリに、
新たに「Modules」というフォルダ、さらにその中に「posh-git」ディレクトリを作って、そこに入れることにしました。
そして、「Microsoft.PowerShell_profile.ps1」の中身をこう書き替えました。

# Load posh-git example profile
. 'C:\Users\UserName\Documents\WindowsPowerShell\Modules\posh-git\profile.example.ps1'
# 上の UserName の部分は、人によって違います

$GitPromptSettings.EnableFileStatus = $false    # 簡易ステータス非表示

これで、最初に clone した posh-git フォルダを削除しても、正常に動くようになりました。

$GitPromptSettings.EnableFileStatus = $false のオプションについては、
以下の記事で勧められていた設定を使わせていただきました。
Bitbucket | The Git solution for professional teams

ただしこのオプションを入れると、以下のような
前回のコミットからどれだけ変更があったのかの表示が出なくなってしまいますので、動作が遅いな、と感じたら入れるくらいにしときましょう。
f:id:nekonenene:20150911020959p:plain

ちなみに、Windows10 32bit でも posh git が動作することを確認しました。