Git Status in Powershell

Utilizzate git? Vorreste integrare in maniera utile e funzionale le informazioni di git status quando usate Windows Powershell? Oramai queste personalizzazioni non sono puù riservate a shell Linux come bash, ma il progetto posh-git ha pensato anche al nostro Powershell
Cos’è Posh-git
posh-git è un modulo PowerShell che fornisce le informazioni di ‘git status’ riassumendole direttamente nel prompt di Powershell. Ad esempio questo:
Inoltre fornite anche l’autocompletamento tramite tasto ‘tab’ per i comandi di git, nomi delle branch, path, eccetera. Non male vero?
Requisiti
-
Windows PowerShell 5.x oppure PowerShell Core 6.0. Puoi usare il comando $PSVersionTable.PSVersion per verificare il numero di versione
-
La Script execution policy deve essere RemoteSigned oppure Unrestricted. Puoi verificare il livello di Script execution polity usando il comando Get-ExecutionPolicy, mentre puoi impostarla (lanciano PowerShell da amministratore) Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Confirm.
-
Git deve essere installato e disponibile nella variabili d’ambiente. Prova a verificarlo digitando git –version in PowerShell. Se hai problemi, verifica l’installazione di Git verificando sul sito ufficiale Git e se git è correttamente presente nel PATH.
Installazione di posh-git
Basta aprire una finestra PowerShell come amministratore e lanciare il comando
PowerShellGet\Install-Module posh-git -Scope CurrentUser -Force
Poi lancia questo comando per eseguire posh-git in ogni prossima finestra PowerShell
Add-PoshGitToProfile -AllUsers -AllHosts
Aggiornamento di posh-git
Per aggiornare posh-git, da una finestra PowerShell come amministratore lancia il comando
PowerShellGet\Update-Module posh-git
Git Status
Un riassunto su cosa significano i caratteri che posh-git aggiunge a PowerShell:
[{HEAD-name} S +A ~B -C !D | +E ~F -G !H W]
-
{HEAD-name}
è la branch corrent, o lo SHA in caso di detached HEAD- Se azzurro: la branch è allienate al remote
- Se verde: la branch è più avanti del remote
- Se rosso: la branch è più indietro del remote
- Se giallo: la branch è sia più indietro che più avanti del remote
-
S
rappresenta lo stato in rapporto alla remote branch.≡
= la branch locale è allo stesso livello di commit della remote branch↑<num>
= la branch locale è più avanti della remote branch dello specificato numero di commit↓<num>
= la branch locale è più indietro della remote branch dello specificato numero di commit<a>↕<b>
= la branch locale è sia più indietro che più avanti rispetto alla remote branch dello specificato numero di commit×
= la branch locale traccia una branch che non esiste nel remote
-
ABCD
rappresenta l’index;|
EFGH
rappresenta la working directory+
= file aggiunti~
= file modificati-
= file cancellati!
= file in conflitto- Lo stato dell’index è il verde mentre lo stato della working directory è in rosso
-
W
rappresenta lo status “generale” della working directory!
= Ci sono unstaged changes~
= Ci sono uncommitted changes- vuoto = nessuno dei precedenti