Git Status in Powershell

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:

Un esempio di posh-git

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