# GitHub CLI (gh) — GitHub aus dem Terminal steuern

> Praxis-Guide zur GitHub CLI — Pull Requests, Issues, Releases, Repositories und Actions direkt im Terminal verwalten.

Source: https://www.jpkc.com/db/cheatsheets/version-control/gh/

<!-- PROSE:intro -->
Die GitHub CLI bringt GitHub direkt in dein Terminal: Pull Requests, Issues, Releases, Repositories, Actions und Gists steuerst du, ohne den Browser zu öffnen. `gh` ist das offizielle Werkzeug von GitHub und spricht die GitHub-API nativ – inklusive Authentifizierung, Skripting und Erweiterungen. Wer ohnehin mit `git` arbeitet, verkürzt mit `gh` den Weg vom lokalen Branch zum gemergten Pull Request spürbar. Dieser Guide zeigt dir die wichtigsten Kommandos für den Alltag, von der Anmeldung bis zum API-Zugriff.
<!-- PROSE:intro:end -->

## Authentifizierung & Setup

`gh auth login` — Bei GitHub anmelden.

```bash
gh auth login
```

`gh auth status` — Authentifizierungs-Status anzeigen.

```bash
gh auth status
```

`gh auth logout` — Von GitHub abmelden.

```bash
gh auth logout
```

`gh config set <key> <value>` — Einen Konfigurationswert setzen.

```bash
gh config set editor vim
```

## Pull Requests

`gh pr create` — Einen Pull Request erstellen (interaktiv).

```bash
gh pr create --title 'Fix bug' --body 'Description'
```

`gh pr list` — Offene Pull Requests auflisten.

```bash
gh pr list
```

`gh pr view <number>` — Details eines Pull Requests anzeigen.

```bash
gh pr view 42
```

`gh pr checkout <number>` — Den Branch eines Pull Requests lokal auschecken.

```bash
gh pr checkout 42
```

`gh pr merge <number>` — Einen Pull Request mergen.

```bash
gh pr merge 42 --squash --delete-branch
```

`gh pr diff <number>` — Das Diff eines Pull Requests anzeigen.

```bash
gh pr diff 42
```

`gh pr review <number>` — Ein Review zu einem Pull Request hinzufügen.

```bash
gh pr review 42 --approve
```

`gh pr close <number>` — Einen Pull Request schließen.

```bash
gh pr close 42
```

## Issues

`gh issue create` — Ein neues Issue erstellen (interaktiv).

```bash
gh issue create --title 'Bug report' --label bug
```

`gh issue list` — Offene Issues auflisten.

```bash
gh issue list --label bug
```

`gh issue view <number>` — Details eines Issues anzeigen.

```bash
gh issue view 15
```

`gh issue close <number>` — Ein Issue schließen.

```bash
gh issue close 15 --reason completed
```

`gh issue comment <number>` — Einen Kommentar zu einem Issue hinzufügen.

```bash
gh issue comment 15 --body 'Fixed in PR #42'
```

`gh issue edit <number>` — Ein Issue bearbeiten (Titel, Body, Labels, Assignees).

```bash
gh issue edit 15 --add-label 'priority:high'
```

## Repositories

`gh repo create <name>` — Ein neues Repository erstellen.

```bash
gh repo create my-project --public --clone
```

`gh repo clone <repo>` — Ein Repository klonen.

```bash
gh repo clone owner/repo
```

`gh repo view` — Details des aktuellen Repositories anzeigen.

```bash
gh repo view --web
```

`gh repo fork <repo>` — Ein Repository forken.

```bash
gh repo fork owner/repo --clone
```

`gh repo list <owner>` — Repositories eines Users oder einer Organisation auflisten.

```bash
gh repo list my-org --limit 50
```

`gh repo rename <new-name>` — Das aktuelle Repository umbenennen.

```bash
gh repo rename new-project-name
```

## Actions & Workflows

`gh run list` — Aktuelle Workflow-Runs auflisten.

```bash
gh run list --limit 10
```

`gh run view <run-id>` — Details eines Workflow-Runs anzeigen.

```bash
gh run view 12345
```

`gh run watch <run-id>` — Einen laufenden Workflow in Echtzeit verfolgen.

```bash
gh run watch 12345
```

`gh run rerun <run-id>` — Einen fehlgeschlagenen Workflow erneut ausführen.

```bash
gh run rerun 12345 --failed
```

`gh workflow list` — Alle Workflows im Repository auflisten.

```bash
gh workflow list
```

`gh workflow run <workflow>` — Einen Workflow manuell auslösen.

```bash
gh workflow run deploy.yml --ref main
```

## Releases & Gists

`gh release create <tag>` — Ein neues Release erstellen.

```bash
gh release create v1.0.0 --generate-notes
```

`gh release list` — Releases auflisten.

```bash
gh release list
```

`gh release download <tag>` — Release-Assets herunterladen.

```bash
gh release download v1.0.0
```

`gh gist create <file>` — Ein Gist aus einer Datei erstellen.

```bash
gh gist create script.sh --public
```

`gh gist list` — Deine Gists auflisten.

```bash
gh gist list
```

## API & Erweiterungen

`gh api <endpoint>` — Eine authentifizierte GitHub-API-Anfrage senden.

```bash
gh api repos/owner/repo/contributors
```

`gh api <endpoint> --jq '<filter>'` — API-Anfrage mit jq-Filterung.

```bash
gh api repos/owner/repo/pulls --jq '.[].title'
```

`gh extension install <repo>` — Eine gh-CLI-Erweiterung installieren.

```bash
gh extension install dlvhdr/gh-dash
```

`gh extension list` — Installierte Erweiterungen auflisten.

```bash
gh extension list
```

`gh browse` — Das aktuelle Repository im Browser öffnen.

```bash
gh browse
```

<!-- PROSE:outro -->
## Fazit

`gh` schlägt die Brücke zwischen lokalem `git` und der GitHub-Plattform: Pull Requests, Reviews und Releases erledigst du, ohne die Hände von der Tastatur zu nehmen. Besonders stark wird das Tool in Skripten und CI/CD-Pipelines – mit `gh api` und `--jq` greifst du strukturiert auf jede Stelle der GitHub-API zu und automatisierst wiederkehrende Abläufe.

## Weiterführende Links

- [GitHub CLI – offizielle Website](https://cli.github.com/) – Download und Überblick (englisch)
- [GitHub CLI – Handbuch](https://cli.github.com/manual/) – vollständige Befehlsreferenz (englisch)
- [GitHub – Wikipedia](https://de.wikipedia.org/wiki/GitHub) – Hintergrund zur Plattform
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [git](https://www.jpkc.com/db/cheatsheets/version-control/git/) – das zugrunde liegende Versionskontrollsystem

