Chapters ▾ 2nd Edition

A1.8 Appendix A: O Git em Outros Ambientes - Git no PowerShell

Git no PowerShell

O terminal de linha de comando legado no Windows (cmd.exe) não é realmente capaz de prover uma experiência customizada com o Git, mas se você estiver usando o PowerShell, você está com sorte. Isto também funciona se você estiver rodando o PowerShell Core no Linux ou macOS. Um pacote chamado posh-git (https://github.com/dahlbyk/posh-git) fornece facilidades poderosas de autocompletar com tabulação, bem como um prompt melhorado para te ajudar a ficar por dentro do status do seu repositório. Fica parecido com isto:

PowerShell com o Posh-git
Figure 187. PowerShell com o Posh-git

Instalação

Pré-requisitos (apenas Windows)

Antes que você consiga rodar scripts do PowerShell na sua máquina, você precisa definir a sua ExecutionPolicy local para RemoteSigned (basicamente, qualquer coisa exceto Undefined e Restricted). Se você escolher AllSigned ao invés de RemoteSigned, também os scripts locais (os seus próprios) precisarão ser assinados digitalmente para poderem ser executados. Com o RemoteSigned, apenas os scripts que tenham o ZoneIdentifier definido como Internet (foram baixados da web) precisam ser assinados, outros não. Se você for um administrador e quiser definir isto para todos os usuários daquela máquina, use -Scope LocalMachine. Se você for um usuário normal, sem direitos administrativos, pode usar -Scope CurrentUser para definir isto apenas para você.

Mais sobre Política de Execução (ExecutionPolicy) do PowerShell: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicy.

Para definir o valor de ExecutionPolicy para RemoteSigned em relação a todos os usuários, utilize o seguinte comando:

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

Se você tiver no mínimo o PowerShell 5 ou o PowerShell 4 com o PackageManagement instalado, você pode usar o gerenciador de pacotes para instalar o posh-git para você.

Mais informações sobre a Galeria do PowerShell (PowerShell Gallery): 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

Se você quiser instalar o posh-git para todos os usuários, use -Scope AllUsers em vez do anterior, e execute o comando a partir de um console do PowerShell elevado (com permissões de administrador). Se o segundo comando falhar com um erro como Module 'PowerShellGet' was not installed by using Install-Module, você precisará rodar um outro comando antes:

> Install-Module PowerShellGet -Force -SkipPublisherCheck

Depois você pode voltar e tentar novamente. Isto acontece porque os módulos que são enviados (ship with) junto ao Windows PowerShell são assinados com um certificado de publicação diferente.

Atualizar o Prompt do PowerShell

Para incluir informações do Git no seu prompt, o módulo posh-git precisa ser importado. Para ter o posh-git importado sempre que o PowerShell for iniciado, execute o comando Add-PoshGitToProfile, o qual vai adicionar a declaração de importação no seu script $profile. Este script é executado toda vez que você abre um novo console do PowerShell. Tenha em mente que existem múltiplos scripts do tipo $profile. Por exemplo, um para o console e um outro separado para o ISE.

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

A partir do código-fonte (From Source)

Basta baixar um release do posh-git em https://github.com/dahlbyk/posh-git/releases, e descompactá-lo. Então importe o módulo usando o caminho completo (full path) para o arquivo posh-git.psd1:

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

Isto irá adicionar a linha correta ao seu arquivo profile.ps1, e o posh-git estará ativo na próxima vez que você abrir o PowerShell.

Para uma descrição sobre as informações do sumário de status do Git (Git status summary) exibidas no prompt, veja: https://github.com/dahlbyk/posh-git/blob/master/README.md#git-status-summary-information Para mais detalhes em como customizar o seu prompt do posh-git, veja: https://github.com/dahlbyk/posh-git/blob/master/README.md#customization-variables.