Git
Chapters ▾ 2nd Edition

A1.6 Appendix A: Git в други среди - Git в PowerShell

Git в PowerShell

Стандартният команден терминал в Windows (cmd.exe) не е особено подходящ за комфортна работа с Git, но ако използвате PowerShell, тогава нещата са други. Това също работи ако използвате PowerShell на друга платформа, различна от Windows, например Debian. Пакетът Posh-Git (https://github.com/dahlbyk/posh-git) осигурява мощна tab-completion функционалност, както и подобрен промпт за вашите хранилища. Изглежда така:

PowerShell с Posh-git.
Figure 165. PowerShell с Posh-git.

Инсталация

Изисквания (само за Windows)

Преди да можете да изпълнявате PowerShell скриптове, трябва да настроите вашата локална ExecutionPolicy на RemoteSigned (всичко с изключение на Undefined и Restricted). Ако изберете AllSigned вместо RemoteSigned, също и локалните скриптове (вашите собствени) трябва да бъдат цифрово подписани, за да могат да бъдат изпълнявани. С RemoteSigned, само скриптовете със "ZoneIdentifier" настроен на Internet (тоест, изтеглени от мрежата) е необходимо да са подписани, другите не. Ако сте администратор и искате да го зададете за всички потребители, използвайте "-Scope LocalMachine". Ако сте нормален потребител без административни права, използвайте "-Scope CurrentUser" за да зададете настройката само за вас. Повече за PowerShell Scopes: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_scopes

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

Ако имате поне PowerShell 5 или PowerShell 4 с PackageManagement, можете да използвате пакетния мениджър за да издърпате Posh-Git. Повече информация за изискванията: https://docs.microsoft.com/en-us/powershell/gallery/overview

> Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
> Update-Module PowerShellGet -Force
> Install-Module Posh-Git -Scope AllUsers

Ако искате да инсталирате Posh-Git само за текущия потребител, а не глобално, подайте "-Scope CurrentUser" вместо това. Ако втората команда завърши с грешка от рода на Module 'PowerShellGet' was not installed by using Install-Module, ще трябва първо да изпълните друга такава:

> Install-Module PowerShellGet -Force -SkipPublisherCheck

След това може да се върнете и да опитате отново. Това се случва, защото модулите, които идват с Windows Powershell са подписани с различни сертификати.

Обновяване на PowerShell промпта

За да включите Git информация в промпта, posh-git трябва да бъде импортиран. За да стане това автоматично, добавете import инструкция в $profile скрипта. Той се изпълнява всеки път, когато отворите нов PowerShell промпт. Не забравяйте, че има няколко $profile скриптове. Например един за конзолата и друг отделен за ISE.

> New-Item -Name $(Split-Path -Path $profile) -ItemType Directory -Force
> 'Import-Module Posh-Git' | Out-File -Append -Encoding default -FilePath $profile

От изходен код

Просто изтеглете Posh-Git версия от (https://github.com/dahlbyk/posh-git), и я разархивирайте в WindowsPowershell директорията. След това отворете Powershell промпт като администратор и изпълнете:

> cd ~\Documents\WindowsPowerShell\Module\posh-git
> .\install.ps1

Това ще добави правилния ред във файла profile.ps1 и posh-git ще е активен следващия път, когато отворите вашия промпт.