Git
Chapters ▾ 2nd Edition

A1.9 Appendix A: Git в других окружениях - Git в Powershell

Git в Powershell

Стандартный терминал командной строки Windows (cmd.exe), на самом деле, не предназначен для специализированного использования Git, но если вы используете Powershell, то это меняет дело. Это также применимо, если вы используете PowerShell Core на Linux или macOS. Пакет Posh-Git (https://github.com/dahlbyk/posh-git) предоставляет мощные средства завершения команд, а также расширенные подсказки, что поможет вам поддерживать состояние вашего репозитория на высоком уровне. Выглядит это примерно так:

Powershell с Posh-git.
Рисунок 166. Powershell с Posh-git.

Установка

Предустановки (только для Windows)

Для запуска PowerShell скриптов, вам необходимо установить значение локальной политики ExecutionPolicy в значение RemoteSigned (вообще-то, в любое значение, кроме Undefined или Restricted). Если вы установите значение в AllSigned вместо RemoteSigned, то для запуска локальных скриптов (владельцем которых являетесь вы) они должны иметь цифровую подпись. При использовании RemoteSigned должны иметь цифровую подпись только те скрипты, у которых ZoneIdentifier установлен в значение Internet (скачены по сети). Если вы администратор и хотите установить значение политики для всех пользователей, добавьте флаг -Scope LocalMachine. Если вы обычный пользователь и не имеете прав администратора, то используйте флаг -Scope CurrentUser для применения политики только для текущего пользователя.

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

PowerShell галерея

Если вы используете PowerShell 5 или PowerShell 4 с установленным PackageManagement, то posh-git можно установить с помощью пакетного менеджера.

Дополнительная информация о галерее PowerShell: https://docs.microsoft.com/en-us/powershell/scripting/gallery/overview

> Install-Module posh-git -Scope CurrentUser -Force
> Install-Module posh-git -Scope CurrentUser -AllowPrerelease -Force # Последняя бета версия с поддержкой PowerShell Core

Если вы хотите установить posh-git для всех пользователей в системе, то в команде выше используйте флаг -Scope AllUsers, а её выполнение следует производить с повышенными привилегиями. Если вторая команда завершится ошибкой типа Module 'PowerShellGet' was not installed by using Install-Module, то необходимо выполнить следующую команду:

> Install-Module PowerShellGet -Force -SkipPublisherCheck

А затем повторить установку. Это происходит потому, что поставляемые вместе с Windows PowerShell модули подписаны другим сертификатом.

Модификация приглашения ввода в PowerShell

Для добавления git информации в приглашение ввода необходимо импортировать модуль posh-git. Для автоматического импорта модуля posh-git при каждом запуске PowerShell, выполните команду Add-PoshGitToProfile, которая добавит инструкции импорта в ваш $profile скрипт. Этот скрипт выполняется каждый раз как вы открываете консоль PowerShell. Имейте ввиду, что существует несколько $profile скриптов: например, один для консоли, а другой для ISE.

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

Установка из исходников

Скачайте релиз posh-git с https://github.com/dahlbyk/posh-git и распакуйте. Затем импортируйте модуль используя полный путь к файлу posh-git.psd1:

> Import-Module <путь-к-распакованной-директории>\src\posh-git.psd1
> Add-PoshGitToProfile -AllHosts

В файл profile.ps1 будет добавлена соответствующая строка, за счёт которой posh-git будет подключаться каждый раз при запуске PowerShell.

Описание сводной информации о статусе Git, отображаемой в приглашении ввода, приведено здесь: https://github.com/dahlbyk/posh-git/blob/master/README.md#git-status-summary-information. Дополнительные сведения по настройке приглашения ввода приведены здесь: https://github.com/dahlbyk/posh-git/blob/master/README.md#customization-variables.