Vorbei ist der Spagat zwischen Git auf der Kommandozeile und der GitHub-Weboberfläche: GitHub hat sich selbst einen nativen Client für den Terminal spendiert – und der Umgang ist erfreulich einfach.
Das native GitHub CLI bietet die Möglichkeit, wichtige Aktionen per Kommandozeile auszuführen, ohne die Weboberfläche bemühen zu mssen.
(Bild: Lang / GitHub)
Wer mit GitHub arbeitet, hat viele Möglichkeiten, einen persönlichen Workflow aufzubauen. Viele Entwicklertools bieten eine entsprechende Anbindung für Issues, Pull Requests und dergleichen. Die eigentliche Arbeit am Code findet meist ganz simpel mit Git direkt im Terminal statt.
Statt komplexer Entwicklungshelfer wie das stetig wachsende Jira-Portfolio wird für das Management drum herum oft doch nur GitHubs Weboberfläche eingesetzt. Schließlich ist sie einfach, bietet – natürlich – alle GitHub-Funktionen und wenn man mal ehrlich ist: Sie ist einfach da.
So bequem und intuitiv die Arbeit im Browser auch sein mag, so lästig ist der ständige Wechsel zwischen Terminal und Web, Tastatur und Maus. Denken Sie einfach mal an Notebooks, die nur für die Entwicklung gedacht sind – muss dort wirklich eine grafische Desktop-Umgebung laufen, nur um ein paar GitHub-Issues zu bestätigen?
Nun, das musste auch in der Vergangenheit schon nicht sein: Mit dem im GitHub-Repository gelisteten hub gibt es schon länger einen CLI-Zugang für GitHub – und Git. Hub fungiert als Git-Wrapper und liefert darüber hinaus direkte Interaktion mit GitHub. Man könnte es wohl eine GitHub-spezifische Git-Version nennen. Hub ist zwar kein offizielles GitHub-Projekt, wird jedoch von einem GitHub-Mitarbeiter privat betreut.
Hub bringt also Git und GitHub-Workflows unter einen Hut bringt, das offizielle GitHub-Projekt GitHub CLI (kurz: gh) setzt derweil rein auf letztere. Sie können sich im Grunde also aussuchen, ob Sie Git und GitHub gemeinsam per Hub oder getrennt mit Git und GitHub CLI nutzen.
Bei GitHub gab es durchaus Überlegungen, Hub zu einem offiziellen Projekt zu machen. Man hat sich aber dagegen und für gh entschieden, um Hub-Nutzer nicht vor den Kopf zu stoßen und einen einfacheren CLI-Zugang für GitHub-Workflows zu schaffen.
Funktionsumfang
GitHub CLI ermöglicht den Zugriff auf den kompletten Workflow über eine übersichtliche Reihe von Kommandos (etwa „gist“), Subkommandos (wie „create“) und Flags (etwa „--public“). Hier die Kommandos mit einer Auswahl der Subkommandos:
alias (delete, list, set)
api
auth (login)
config (get, set)
gist (create, list)
issue (reopen, status)
pr (checkout, merge, review)
release (download, upload)
repo (clone, fork, view)
Über das api-Kommando können Sie dabei direkte HTTP-Anfragen an die GitHub-API absetzen, deren Ausgabe dann lokal erfolgt.
GitHub CLI einrichten
Für die Installation von GitHub CLI werden alle relevanten Betriebssysteme unterstützt, teils über Paketmanager, alternativ über Binary-Downloads oder natürlich die Quelle selbst. Darunter befinden sich auch regelrecht exotische Plattformen wie Android und NixOS. Für Debian und Ubuntu ist der Vorgang ziemlich straight forward:
Für Windows steht freilich eine MSI-Datei der GitHub CLI zur Verfügung, eleganter geht es über den freien Paketmanager Chocolatey – dessen Paketierung wir übrigens in Kürze hier vorstellen:
choco install gh
Auch wenn die gh-Befehle recht übersichtlich sind, möchte man als ersten Schritt vielleicht Autovervollständigung einrichten, sofern dies nicht über den Paketmanager geschehen ist. Dafür ist es notwendig, folgenden Befehl idealerweise in die persönliche Bash-Konfiguration (~/.bashrc) einzutragen oder zum Testen einfach auszuführen:
eval "$(gh completion -s bash)"
Anschließend stellt man eine Verbindung zu dem gewünschten GitHub-Account her, beispielsweise auf GitHub.com. Grundsätzlich genügt ein simples “gh auth login”, um die interaktive Anmeldung zu starten.
Da dies allerdings zum Beispiel in der Git Bash for Windows nicht funktioniert, können Sie auch gleich über ein entsprechendes Token gehen. Erstellen Sie dazu zunächst in Ihren GitHub-Account-Einstellungen (nicht Repo-Einstellungen!) unter „Developer settings/Personal access tokens“ einen Token mit mindestens den beiden aktivierten Bereichen „repo“ und „read:org“ und speichern Sie den String in einer Datei (hier etwa meintoken.txt).
Nun können Sie sich auch in der Windows-Bash wie folgt authentifizieren:
gh auth login --with-token < meintoken.txt
Sobald die Verbindung steht, können Sie zum Testen beispielsweise ein vorhandenes Repository klonen und die auch in der Weboberfläche zu sehende Readme anzeigen – hier am Beispiel des Repos „cli-help“:
gh repo clone cli-helpcd cli-helpgh repo view
Damit steht gh für die Arbeit bereit – allerdings gibt es optional auch ein wenig zum Konfigurieren über „gh config“, das über die Subkommandos „get“ und „set“ folgende vier Einstellungen setzen/anzeigen kann:
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
pager: Terminal Pager festlegen (etwa more oder less)
Generell bekommen Sie in gh über „gh KOMMANDO –help“ Hilfe zu den einzelnen Kommandos.
Arbeiten mit gh
Die eigentliche Arbeit mit gh ist im Grunde ziemlich simpel, sofern man Git und GitHub versteht. Um das Ganze mal am Beispiel eines Pull Requests durchzuspielen, zunächst die nötigen Vorbereitungen, sprich ein neuer Branch, eine Änderung und ein Commit:
Nun können Sie Ihre Änderungen der Readme.md im Branch testing1 als Pull Request für den Branch master absenden. Auch hier gilt wieder: Die interaktive Variante funktioniert nicht in der Windows-Bash, daher hier ein alleinstehender Befehl:
Hier werden also schlicht Titel, Nachrichten-Body und vor allem der Branch mit dem Commit für den Pull Request angegeben. Im Master-Branch können Sie anschließend mit dem Pull Request arbeiten und zum Beispiel folgenden simplifizierten Workflow durchlaufen:
gh pr list (nummerierte Liste von PRs)gh pr view 4gh pr diff 4gh merge -m 4
Mit dem letzten Befehl wird dabei der eigentliche Merge durchgeführt und zwar per „-m“-Flag mit der Methode „merge commit“ (statt rebase oder sqash). Der Branch testing1 wird dabei automatisch lokal und auf GitHub.com gelöscht.
Alle anderen Befehle folgen immer wieder diesem Muster. Für die genaue Syntax ist eigentlich nur wichtig sich zu merken, dass es sowohl zu Kommandos als auch Subkommandos Hilfestellung gibt, sprich über „gh KOMMANDO –help“ oder „gh KOMMANDO SUBKOMMANDO –help“.
Einige Dinge werden aber immer wieder auftauchen, da lohnt es sich, gh-interne Aliasse anzulegen. Wer beispielsweise regelmäßig Pull Requests diverser Mitarbeiter bekommt, könnte sich deren PRs ganz einfach via „gh prlist peter“, „gh prlist jochen“ etc. anzeigen lassen, wenn Sie einen entsprechenden Alias setzen:
gh alias set prlist 'gh pr list --assignee "$1"'
Selbstverständlich arbeitet gh auch mit GitHub Enterprise Server, so dass es die Weboberfläche auch wirklich überall umgehend ersetzen kann. Und das wird es wohl auch vielerorts, denn das noch recht junge Projekt geht einfach von der Hand und die Möglichkeit, GitHub-Workflows einfach ins Scripting zu übernehmen, ist schon verlockend.
Sicherlich lohnt es sich ab und an einen Blick auf die GitHub-CLI-Homepage zu werfen. Schließlich ist es als quelloffenes Tool für Entwickler und zum Entwickeln prädestiniert für Erweiterungen, Abwandlungen und neue Spielereien.