Git
Chapters ▾ 2nd Edition

A1.8 Anhang A: Git in anderen Umgebungen - Git in PowerShell

Git in PowerShell

Das Legacy-Befehlszeilenterminal unter Windows (cmd.exe) bietet keine Git Integration, aber wenn du PowerShell verwendest, hast du Glück. Dies funktioniert auch, wenn du PowerShell Core unter Linux oder macOS ausführst. Ein Paket mit dem Namen posh-git (https://github.com/dahlbyk/posh-git) bietet leistungsstarke Funktionen zur Tab Vervollständigung sowie eine erweiterte Eingabeaufforderung, mit der du den Überblick über deinen Repository-Status behalten kannst. Folgendermaßen sieht es aus:

PowerShell mit Posh-git
Abbildung 187. PowerShell with Posh-git

Installation

Voraussetzungen (Nur für Windows)

Bevor du PowerShell-Skripte auf deinen Computer ausführen kannst, musst du deine lokale ExecutionPolicy auf RemoteSigned (im Allgemeinen alles außer Undefiniert und Eingeschränkt) einstellen. Wenn du AllSigned anstelle von RemoteSigned auswählst, müssen auch lokale Skripte (deine eigenen) digital signiert sein, damit sie ausgeführt werden können. Mit RemoteSigned müssen nur Skripte signiert werden, bei denen „ZoneIdentifier“ auf Internet eingestellt ist (sie wurden aus dem Web heruntergeladen), andere nicht. Wenn du ein Administrator bist und es für alle Benutzer auf diesem Computer festlegen möchtest, verwende „-Scope LocalMachine“. Wenn du ein normaler Benutzer ohne Administratorrechte bist, kannst du „-Scope CurrentUser“ verwenden, um es nur für dich selber festzulegen.

Um den Wert von ExecutionPolicy für alle Benutzer auf RemoteSigned zu setzen, verwende den nächsten Befehl:

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

PowerShell Galerie

Wenn du mindestens PowerShell 5 oder PowerShell 4 mit PackageManagement installiert hast, kannst du posh-git mithilfe des Paketmanagers installieren.

Weitere Informationen zur PowerShell-Galerie unter: https://docs.microsoft.com/de-de/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

Wenn du posh-git für alle Benutzer installieren möchtest, verwende stattdessen „-Scope AllUsers“ und führe den Befehl über eine PowerShell-Konsole mit admin Rechten aus. Wenn der zweite Befehl fehlschlägt und ein Fehler wie Module 'PowerShellGet' was not installed by using Install-Module auftritt, musst du zuerst einen anderen Befehl ausführen:

> Install-Module PowerShellGet -Force -SkipPublisherCheck

Dann kannst du es erneut versuchen. Dies liegt daran, dass die mit Windows PowerShell gelieferten Module mit einem anderen Veröffentlichungszertifikat signiert sind.

Aktualisierung der PowerShell Eingabeaufforderung

Um Git-Informationen in deine Eingabeaufforderung aufzunehmen, muss das Posh-Git-Modul importiert werden. Wenn posh-git bei jedem Start von PowerShell importiert werden soll, führe den Befehl Add-PoshGitToProfile aus, mit dem die import-Anweisung in dein $profile-Skript eingefügt wird. Dieses Skript wird jedes Mal ausgeführt, wenn du eine neue PowerShell-Konsole öffnest. Beachte, dass es mehrere $profile Skripte gibt. Z.B. eins für die Konsole und ein separates für die ISE.

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

Vom Quellcode

Lade einfach eine posh-git-Version von (https://github.com/dahlbyk/posh-git) herunter und entpacke sie. Importiere dann das Modul unter Verwendung des vollständigen Pfads zur Datei posh-git.psd1:

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

Dies fügt die richtige Zeile zu deiner profile.ps1 Datei hinzu und posh-git wird beim nächsten Öffnen von PowerShell aktiviert.

Eine Beschreibung der in der Eingabeaufforderung angezeigten Git-Statuszusammenfassungsinformationen findest du unter: https://github.com/dahlbyk/posh-git/blob/master/README.md#git-status-summary-information Weitere Informationen zum Anpassen deiner posh-git-Eingabeaufforderung findest du unter: https://github.com/dahlbyk/posh-git/blob/master/README.md#customization-variables.

scroll-to-top