gh-cli

Par github · awesome-copilot

Référence complète de GitHub CLI (`gh`) pour les dépôts, issues, pull requests, Actions, projets, releases, gists, codespaces, organisations, extensions et toutes les opérations GitHub en ligne de commande.

npx skills add https://github.com/github/awesome-copilot --skill gh-cli

GitHub CLI (gh)

Référence complète pour GitHub CLI (gh) - travaillez sans interruption avec GitHub depuis la ligne de commande.

Version : 2.85.0 (à jour en janvier 2026)

Prérequis

Installation

# macOS
brew install gh

# Linux
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
sudo apt update
sudo apt install gh

# Windows
winget install --id GitHub.cli

# Vérifier l'installation
gh --version

Authentification

# Connexion interactive (par défaut: github.com)
gh auth login

# Connexion avec un nom d'hôte spécifique
gh auth login --hostname enterprise.internal

# Connexion avec token
gh auth login --with-token < mytoken.txt

# Vérifier l'état de l'authentification
gh auth status

# Basculer entre les comptes
gh auth switch --hostname github.com --user username

# Déconnexion
gh auth logout --hostname github.com --user username

Configuration de l'intégration Git

# Configurer git pour utiliser gh comme gestionnaire d'authentifiants
gh auth setup-git

# Afficher le token actif
gh auth token

# Actualiser les permissions d'authentification
gh auth refresh --scopes write:org,read:public_key

Structure CLI

gh                          # Commande racine
├── auth                    # Authentification
│   ├── login
│   ├── logout
│   ├── refresh
│   ├── setup-git
│   ├── status
│   ├── switch
│   └── token
├── browse                  # Ouvrir dans le navigateur
├── codespace               # GitHub Codespaces
│   ├── code
│   ├── cp
│   ├── create
│   ├── delete
│   ├── edit
│   ├── jupyter
│   ├── list
│   ├── logs
│   ├── ports
│   ├── rebuild
│   ├── ssh
│   ├── stop
│   └── view
├── gist                    # Gists
│   ├── clone
│   ├── create
│   ├── delete
│   ├── edit
│   ├── list
│   ├── rename
│   └── view
├── issue                   # Problèmes
│   ├── create
│   ├── list
│   ├── status
│   ├── close
│   ├── comment
│   ├── delete
│   ├── develop
│   ├── edit
│   ├── lock
│   ├── pin
│   ├── reopen
│   ├── transfer
│   ├── unlock
│   └── view
├── org                     # Organizations
│   └── list
├── pr                      # Demandes de tirage
│   ├── create
│   ├── list
│   ├── status
│   ├── checkout
│   ├── checks
│   ├── close
│   ├── comment
│   ├── diff
│   ├── edit
│   ├── lock
│   ├── merge
│   ├── ready
│   ├── reopen
│   ├── revert
│   ├── review
│   ├── unlock
│   ├── update-branch
│   └── view
├── project                 # Projects
│   ├── close
│   ├── copy
│   ├── create
│   ├── delete
│   ├── edit
│   ├── field-create
│   ├── field-delete
│   ├── field-list
│   ├── item-add
│   ├── item-archive
│   ├── item-create
│   ├── item-delete
│   ├── item-edit
│   ├── item-list
│   ├── link
│   ├── list
│   ├── mark-template
│   ├── unlink
│   └── view
├── release                 # Versions
│   ├── create
│   ├── list
│   ├── delete
│   ├── delete-asset
│   ├── download
│   ├── edit
│   ├── upload
│   ├── verify
│   ├── verify-asset
│   └── view
├── repo                    # Dépôts
│   ├── create
│   ├── list
│   ├── archive
│   ├── autolink
│   ├── clone
│   ├── delete
│   ├── deploy-key
│   ├── edit
│   ├── fork
│   ├── gitignore
│   ├── license
│   ├── rename
│   ├── set-default
│   ├── sync
│   ├── unarchive
│   └── view
├── cache                   # Caches Actions
│   ├── delete
│   └── list
├── run                     # Exécutions de workflow
│   ├── cancel
│   ├── delete
│   ├── download
│   ├── list
│   ├── rerun
│   ├── view
│   └── watch
├── workflow                # Workflows
│   ├── disable
│   ├── enable
│   ├── list
│   ├── run
│   └── view
├── agent-task              # Tâches d'agent
├── alias                   # Alias de commandes
│   ├── delete
│   ├── import
│   ├── list
│   └── set
├── api                     # Requêtes API
├── attestation             # Attestations d'artefact
│   ├── download
│   ├── trusted-root
│   └── verify
├── completion              # Complément de shell
├── config                  # Configuration
│   ├── clear-cache
│   ├── get
│   ├── list
│   └── set
├── extension               # Extensions
│   ├── browse
│   ├── create
│   ├── exec
│   ├── install
│   ├── list
│   ├── remove
│   ├── search
│   └── upgrade
├── gpg-key                 # Clés GPG
│   ├── add
│   ├── delete
│   └── list
├── label                   # Étiquettes
│   ├── clone
│   ├── create
│   ├── delete
│   ├── edit
│   └── list
├── preview                 # Fonctionnalités en avant-première
├── ruleset                 # Ensemble de règles
│   ├── check
│   ├── list
│   └── view
├── search                  # Recherche
│   ├── code
│   ├── commits
│   ├── issues
│   ├── prs
│   └── repos
├── secret                  # Secrets
│   ├── delete
│   ├── list
│   └── set
├── ssh-key                 # Clés SSH
│   ├── add
│   ├── delete
│   └── list
├── status                  # Aperçu du statut
└── variable                # Variables
    ├── delete
    ├── get
    ├── list
    └── set

Configuration

Configuration globale

# Lister toute la configuration
gh config list

# Obtenir une valeur de configuration spécifique
gh config list git_protocol
gh config get editor

# Définir une valeur de configuration
gh config set editor vim
gh config set git_protocol ssh
gh config set prompt disabled
gh config set pager "less -R"

# Effacer le cache de configuration
gh config clear-cache

Variables d'environnement

# Token GitHub (pour l'automatisation)
export GH_TOKEN=ghp_xxxxxxxxxxxx

# Nom d'hôte GitHub
export GH_HOST=github.com

# Désactiver les invites
export GH_PROMPT_DISABLED=true

# Éditeur personnalisé
export GH_EDITOR=vim

# Pagineur personnalisé
export GH_PAGER=less

# Délai d'attente HTTP
export GH_TIMEOUT=30

# Dépôt personnalisé (remplace la valeur par défaut)
export GH_REPO=owner/repo

# Protocole git personnalisé
export GH_ENTERPRISE_HOSTNAME=hostname

Authentification (gh auth)

Connexion

# Connexion interactive
gh auth login

# Authentification basée sur le web
gh auth login --web

# Avec presse-papiers pour le code OAuth
gh auth login --web --clipboard

# Avec un protocole git spécifique
gh auth login --git-protocol ssh

# Avec un nom d'hôte personnalisé (GitHub Enterprise)
gh auth login --hostname enterprise.internal

# Connexion avec token depuis stdin
gh auth login --with-token < token.txt

# Stockage non sécurisé (texte brut)
gh auth login --insecure-storage

Statut

# Afficher l'état de l'authentification pour tous les comptes
gh auth status

# Afficher uniquement le compte actif
gh auth status --active

# Afficher l'état pour un nom d'hôte spécifique
gh auth status --hostname github.com

# Afficher le token en sortie
gh auth status --show-token

# Sortie JSON
gh auth status --json hosts

# Filtrer avec jq
gh auth status --json hosts --jq '.hosts | add'

Basculer entre les comptes

# Basculement interactif
gh auth switch

# Basculer vers un utilisateur/hôte spécifique
gh auth switch --hostname github.com --user monalisa

Token

# Afficher le token d'authentification
gh auth token

# Token pour un hôte/utilisateur spécifique
gh auth token --hostname github.com --user monalisa

Actualiser

# Actualiser les authentifiants
gh auth refresh

# Ajouter des permissions
gh auth refresh --scopes write:org,read:public_key

# Supprimer les permissions
gh auth refresh --remove-scopes delete_repo

# Réinitialiser aux permissions par défaut
gh auth refresh --reset-scopes

# Avec presse-papiers
gh auth refresh --clipboard

Configuration Git

# Configurer le gestionnaire d'authentifiants git
gh auth setup-git

# Configuration pour un hôte spécifique
gh auth setup-git --hostname enterprise.internal

# Forcer la configuration même si l'hôte n'est pas connu
gh auth setup-git --hostname enterprise.internal --force

Browse (gh browse)

# Ouvrir le dépôt dans le navigateur
gh browse

# Ouvrir un chemin spécifique
gh browse script/
gh browse main.go:312

# Ouvrir un problème ou une demande de tirage
gh browse 123

# Ouvrir un commit
gh browse 77507cd94ccafcf568f8560cfecde965fcfa63

# Ouvrir avec une branche spécifique
gh browse main.go --branch bug-fix

# Ouvrir un dépôt différent
gh browse --repo owner/repo

# Ouvrir des pages spécifiques
gh browse --actions       # Onglet Actions
gh browse --projects      # Onglet Projects
gh browse --releases      # Onglet Releases
gh browse --settings      # Page Paramètres
gh browse --wiki          # Page Wiki

# Afficher l'URL au lieu d'ouvrir
gh browse --no-browser

Dépôts (gh repo)

Créer un dépôt

# Créer un nouveau dépôt
gh repo create my-repo

# Créer avec une description
gh repo create my-repo --description "Mon super projet"

# Créer un dépôt public
gh repo create my-repo --public

# Créer un dépôt privé
gh repo create my-repo --private

# Créer avec une page d'accueil
gh repo create my-repo --homepage https://example.com

# Créer avec une licence
gh repo create my-repo --license mit

# Créer avec un gitignore
gh repo create my-repo --gitignore python

# Initialiser en tant que dépôt template
gh repo create my-repo --template

# Créer un dépôt dans une organisation
gh repo create org/my-repo

# Créer sans cloner localement
gh repo create my-repo --source=.

# Désactiver les problèmes
gh repo create my-repo --disable-issues

# Désactiver le wiki
gh repo create my-repo --disable-wiki

Cloner un dépôt

# Cloner un dépôt
gh repo clone owner/repo

# Cloner dans un répertoire spécifique
gh repo clone owner/repo my-directory

# Cloner avec une branche différente
gh repo clone owner/repo --branch develop

Lister les dépôts

# Lister tous les dépôts
gh repo list

# Lister les dépôts d'un propriétaire
gh repo list owner

# Limiter les résultats
gh repo list --limit 50

# Dépôts publics uniquement
gh repo list --public

# Dépôts source uniquement (pas des forks)
gh repo list --source

# Sortie JSON
gh repo list --json name,visibility,owner

# Sortie tableau
gh repo list --limit 100 | tail -n +2

# Filtrer avec jq
gh repo list --json name --jq '.[].name'

Afficher un dépôt

# Afficher les détails du dépôt
gh repo view

# Afficher un dépôt spécifique
gh repo view owner/repo

# Sortie JSON
gh repo view --json name,description,defaultBranchRef

# Afficher dans le navigateur
gh repo view --web

Modifier un dépôt

# Modifier la description
gh repo edit --description "Nouvelle description"

# Définir la page d'accueil
gh repo edit --homepage https://example.com

# Modifier la visibilité
gh repo edit --visibility private
gh repo edit --visibility public

# Activer/désactiver les fonctionnalités
gh repo edit --enable-issues
gh repo edit --disable-issues
gh repo edit --enable-wiki
gh repo edit --disable-wiki
gh repo edit --enable-projects
gh repo edit --disable-projects

# Définir la branche par défaut
gh repo edit --default-branch main

# Renommer le dépôt
gh repo rename new-name

# Archiver un dépôt
gh repo archive
gh repo unarchive

Supprimer un dépôt

# Supprimer un dépôt
gh repo delete owner/repo

# Confirmer sans invite
gh repo delete owner/repo --yes

Fork un dépôt

# Fork un dépôt
gh repo fork owner/repo

# Fork vers une organisation
gh repo fork owner/repo --org org-name

# Cloner après le fork
gh repo fork owner/repo --clone

# Nom de remote pour le fork
gh repo fork owner/repo --remote-name upstream

Synchroniser un fork

# Synchroniser le fork avec upstream
gh repo sync

# Synchroniser une branche spécifique
gh repo sync --branch feature

# Synchronisation forcée
gh repo sync --force

Définir le dépôt par défaut

# Définir le dépôt par défaut pour le répertoire courant
gh repo set-default

# Définir le dépôt par défaut explicitement
gh repo set-default owner/repo

# Annuler la définition par défaut
gh repo set-default --unset

Liaisons automatiques de dépôt

# Lister les liaisons automatiques
gh repo autolink list

# Ajouter une liaison automatique
gh repo autolink add \
  --key-prefix JIRA- \
  --url-template https://jira.example.com/browse/<num>

# Supprimer une liaison automatique
gh repo autolink delete 12345

Clés de déploiement de dépôt

# Lister les clés de déploiement
gh repo deploy-key list

# Ajouter une clé de déploiement
gh repo deploy-key add ~/.ssh/id_rsa.pub \
  --title "Serveur de production" \
  --read-only

# Supprimer une clé de déploiement
gh repo deploy-key delete 12345

Gitignore et Licence

# Afficher le template gitignore
gh repo gitignore

# Afficher le template de licence
gh repo license mit

# Licence avec nom complet
gh repo license mit --fullname "John Doe"

Problèmes (gh issue)

Créer un problème

# Créer un problème interactivement
gh issue create

# Créer avec un titre
gh issue create --title "Bug : La connexion ne fonctionne pas"

# Créer avec un titre et un corps
gh issue create \
  --title "Bug : La connexion ne fonctionne pas" \
  --body "Étapes pour reproduire..."

# Créer avec le corps d'un fichier
gh issue create --body-file issue.md

# Créer avec des étiquettes
gh issue create --title "Corriger un bug" --labels bug,high-priority

# Créer avec des assignés
gh issue create --title "Corriger un bug" --assignee user1,user2

# Créer dans un dépôt spécifique
gh issue create --repo owner/repo --title "Titre du problème"

# Créer un problème à partir du web
gh issue create --web

Lister les problèmes

# Lister tous les problèmes ouverts
gh issue list

# Lister tous les problèmes (y compris fermés)
gh issue list --state all

# Lister les problèmes fermés
gh issue list --state closed

# Limiter les résultats
gh issue list --limit 50

# Filtrer par assigné
gh issue list --assignee username
gh issue list --assignee @me

# Filtrer par étiquettes
gh issue list --labels bug,enhancement

# Filtrer par milestone
gh issue list --milestone "v1.0"

# Recherche/filtrage
gh issue list --search "is:open is:issue label:bug"

# Sortie JSON
gh issue list --json number,title,state,author

# Vue tableau
gh issue list --json number,title,labels --jq '.[] | [.number, .title, .labels[].name] | @tsv'

# Afficher le nombre de commentaires
gh issue list --json number,title,comments --jq '.[] | [.number, .title, .comments]'

# Trier par
gh issue list --sort created --order desc

Afficher un problème

# Afficher un problème
gh issue view 123

# Afficher avec des commentaires
gh issue view 123 --comments

# Afficher dans le navigateur
gh issue view 123 --web

# Sortie JSON
gh issue view 123 --json title,body,state,labels,comments

# Afficher les champs spécifiques
gh issue view 123 --json title --jq '.title'

Modifier un problème

# Modifier interactivement
gh issue edit 123

# Modifier le titre
gh issue edit 123 --title "Nouveau titre"

# Modifier le corps
gh issue edit 123 --body "Nouvelle description"

# Ajouter des étiquettes
gh issue edit 123 --add-label bug,high-priority

# Supprimer les étiquettes
gh issue edit 123 --remove-label stale

# Ajouter des assignés
gh issue edit 123 --add-assignee user1,user2

# Supprimer les assignés
gh issue edit 123 --remove-assignee user1

# Définir le milestone
gh issue edit 123 --milestone "v1.0"

Fermer/Réouvrir un problème

# Fermer un problème
gh issue close 123

# Fermer avec un commentaire
gh issue close 123 --comment "Corrigé dans la PR #456"

# Rouvrir un problème
gh issue reopen 123

Commenter un problème

# Ajouter un commentaire
gh issue comment 123 --body "Cela semble bon !"

# Modifier un commentaire
gh issue comment 123 --edit 456789 --body "Commentaire mis à jour"

# Supprimer un commentaire
gh issue comment 123 --delete 456789

Statut du problème

# Afficher le résumé du statut du problème
gh issue status

# Statut pour un dépôt spécifique
gh issue status --repo owner/repo

Épingler/Dépingler des problèmes

# Épingler un problème (épinglé au tableau de bord du dépôt)
gh issue pin 123

# Dépingler un problème
gh issue unpin 123

Verrouiller/Déverrouiller un problème

# Verrouiller la conversation
gh issue lock 123

# Verrouiller avec une raison
gh issue lock 123 --reason off-topic

# Déverrouiller
gh issue unlock 123

Transférer un problème

# Transférer vers un autre dépôt
gh issue transfer 123 --repo owner/new-repo

Supprimer un problème

# Supprimer un problème
gh issue delete 123

# Confirmer sans invite
gh issue delete 123 --yes

Développer un problème (PR brouillon)

# Créer une PR brouillon à partir d'un problème
gh issue develop 123

# Créer dans une branche spécifique
gh issue develop 123 --branch fix/issue-123

# Créer avec une branche de base
gh issue develop 123 --base main

Demandes de tirage (gh pr)

Créer une demande de tirage

# Créer une PR interactivement
gh pr create

# Créer avec un titre
gh pr create --title "Fonctionnalité : Ajouter une nouvelle fonctionnalité"

# Créer avec un titre et un corps
gh pr create \
  --title "Fonctionnalité : Ajouter une nouvelle fonctionnalité" \
  --body "Cette PR ajoute..."

# Remplir le corps à partir d'un template
gh pr create --body-file .github/PULL_REQUEST_TEMPLATE.md

# Définir la branche de base
gh pr create --base main

# Définir la branche head (par défaut: branche actuelle)
gh pr create --head feature-branch

# Créer une PR brouillon
gh pr create --draft

# Ajouter des assignés
gh pr create --assignee user1,user2

# Ajouter des relecteurs
gh pr create --reviewer user1,user2

# Ajouter des étiquettes
gh pr create --labels enhancement,feature

# Lier à un problème
gh pr create --issue 123

# Créer dans un dépôt spécifique
gh pr create --repo owner/repo

# Ouvrir dans le navigateur après la création
gh pr create --web

Lister les demandes de tirage

# Lister les PR ouvertes
gh pr list

# Lister toutes les PR
gh pr list --state all

# Lister les PR fusionnées
gh pr list --state merged

# Lister les PR fermées (non fusionnées)
gh pr list --state closed

# Filtrer par branche head
gh pr list --head feature-branch

# Filtrer par branche de base
gh pr list --base main

# Filtrer par auteur
gh pr list --author username
gh pr list --author @me

# Filtrer par assigné
gh pr list --assignee username

# Filtrer par étiquettes
gh pr list --labels bug,enhancement

# Limiter les résultats
gh pr list --limit 50

# Recherche
gh pr list --search "is:open is:pr label:review-required"

# Sortie JSON
gh pr list --json number,title,state,author,headRefName

# Afficher le statut des vérifications
gh pr list --json number,title,statusCheckRollup --jq '.[] | [.number, .title, .statusCheckRollup[]?.status]'

# Trier par
gh pr list --sort created --order desc

Afficher une demande de tirage

# Afficher une PR
gh pr view 123

# Afficher avec des commentaires
gh pr view 123 --comments

# Afficher dans le navigateur
gh pr view 123 --web

# Sortie JSON
gh pr view 123 --json title,body,state,author,commits,files

# Afficher la différence
gh pr view 123 --json files --jq '.files[].path'

# Afficher avec une requête jq
gh pr view 123 --json title,state --jq '"\(.title): \(.state)"'

Vérifier une demande de tirage

# Vérifier la branche de la PR
gh pr checkout 123

# Vérifier avec un nom de branche spécifique
gh pr checkout 123 --branch name-123

# Forcer la vérification
gh pr checkout 123 --force

Diff d'une demande de tirage

# Afficher la différence de la PR
gh pr diff 123

# Afficher la différence avec couleur
gh pr diff 123 --color always

# Sortie dans un fichier
gh pr diff 123 > pr-123.patch

# Afficher la différence des fichiers spécifiques
gh pr diff 123 --name-only

Fusionner une demande de tirage

# Fusionner une PR
gh pr merge 123

# Fusionner avec une méthode spécifique
gh pr merge 123 --merge
gh pr merge 123 --squash
gh pr merge 123 --rebase

# Supprimer la branche après la fusion
gh pr merge 123 --delete-branch

# Fusionner avec un commentaire
gh pr merge 123 --subject "Fusionner PR #123" --body "Fusion de la fonctionnalité"

# Fusionner une PR brouillon
gh pr merge 123 --admin

# Forcer la fusion (ignorer les vérifications)
gh pr merge 123 --admin

Fermer une demande de tirage

# Fermer une PR (en tant que brouillon, pas fusion)
gh pr close 123

# Fermer avec un commentaire
gh pr close 123 --comment "Fermeture en raison de..."

Réouvrir une demande de tirage

# Rouvrir une PR fermée
gh pr reopen 123

Modifier une demande de tirage

# Modifier interactivement
gh pr edit 123

# Modifier le titre
gh pr edit 123 --title "Nouveau titre"

# Modifier le corps
gh pr edit 123 --body "Nouvelle description"

# Ajouter des étiquettes
gh pr edit 123 --add-label bug,enhancement

# Supprimer les étiquettes
gh pr edit 123 --remove-label stale

# Ajouter des assignés
gh pr edit 123 --add-assignee user1,user2

# Supprimer les assignés
gh pr edit 123 --remove-assignee user1

# Ajouter des relecteurs
gh pr edit 123 --add-reviewer user1,user2

# Supprimer les relecteurs
gh pr edit 123 --remove-reviewer user1

# Marquer comme prêt pour la relecture
gh pr edit 123 --ready

Prêt pour la relecture

# Marquer une PR brouillon comme prête
gh pr ready 123

Vérifications de demande de tirage

# Afficher les vérifications de la PR
gh pr checks 123

# Surveiller les vérifications en temps réel
gh pr checks 123 --watch

# Intervalle de surveillance (secondes)
gh pr checks 123 --watch --interval 5

Commenter une demande de tirage

# Ajouter un commentaire
gh pr comment 123 --body "Semble bon !"

# Commenter sur une ligne spécifique
gh pr comment 123 --body "Corriger ceci" \
  --repo owner/repo \
  --head-owner owner --head-branch feature

# Modifier un commentaire
gh pr comment 123 --edit 456789 --body "Mise à jour"

# Supprimer un commentaire
gh pr comment 123 --delete 456789

Relire une demande de tirage

# Relire la PR (ouvre l'éditeur)
gh pr review 123

# Approuver la PR
gh pr review 123 --approve --body "LGTM !"

# Demander des modifications
gh pr review 123 --request-changes \
  --body "Veuillez corriger ces problèmes"

# Commenter sur la PR
gh pr review 123 --comment --body "Quelques remarques..."

# Rejeter la relecture
gh pr review 123 --dismiss

Mettre à jour la branche

# Mettre à jour la branche de la PR avec la dernière branche de base
gh pr update-branch 123

# Forcer la mise à jour
gh pr update-branch 123 --force

# Utiliser la stratégie de fusion
gh pr update-branch 123 --merge

Verrouiller/Déverrouiller une demande de tirage

# Verrouiller la conversation de la PR
gh pr lock 123

# Verrouiller avec une raison
gh pr lock 123 --reason off-topic

# Déverrouiller
gh pr unlock 123

Annuler une demande de tirage

# Annuler une PR fusionnée
gh pr revert 123

# Annuler avec un nom de branche spécifique
gh pr revert 123 --branch revert-pr-123

Statut de demande de tirage

# Afficher le résumé du statut de la PR
gh pr status

# Statut pour un dépôt spécifique
gh pr status --repo owner/repo

GitHub Actions

Exécutions de workflow (gh run)

# Lister les exécutions de workflow
gh run list

# Lister pour un workflow spécifique
gh run list --workflow "ci.yml"

# Lister pour une branche spécifique
gh run list --branch main

# Limiter les résultats
gh run list --limit 20

# Sortie JSON
gh run list --json databaseId,status,conclusion,headBranch

# Afficher les détails d'une exécution
gh run view 123456789

# Afficher une exécution avec les journaux détaillés
gh run view 123456789 --log

# Afficher un travail spécifique
gh run view 123456789 --job 987654321

# Afficher dans le navigateur
gh run view 123456789 --web

# Surveiller l'exécution en temps réel
gh run watch 123456789

# Surveiller avec un intervalle
gh run watch 123456789 --interval 5

# Réexécuter une exécution échouée
gh run rerun 123456789

# Réexécuter un travail spécifique
gh run rerun 123456789 --job 987654321

# Annuler une exécution
gh run cancel 123456789

# Supprimer une exécution
gh run delete 123456789

# Télécharger les artefacts de l'exécution
gh run download 123456789

# Télécharger un artefact spécifique
gh run download 123456789 --name build

# Télécharger dans un répertoire
gh run download 123456789 --dir ./artifacts

Workflows (gh workflow)

# Lister les workflows
gh workflow list

# Afficher les détails du workflow
gh workflow view ci.yml

# Afficher le YAML du workflow
gh workflow view ci.yml --yaml

# Afficher dans le navigateur
gh workflow view ci.yml --web

# Activer le workflow
gh workflow enable ci.yml

# Désactiver le workflow
gh workflow disable ci.yml

# Exécuter le workflow manuellement
gh workflow run ci.yml

# Exécuter avec des entrées
gh workflow run ci.yml \
  --raw-field \
  version="1.0.0" \
  environment="production"

# Exécuter à partir d'une branche spécifique
gh workflow run ci.yml --ref develop

Caches Actions (gh cache)

# Lister les caches
gh cache list

# Lister pour une branche spécifique
gh cache list --branch main

# Lister avec une limite
gh cache list --limit 50

# Supprimer le cache
gh cache delete 123456789

# Supprimer tous les caches
gh cache delete --all

Secrets Actions (gh secret)

# Lister les secrets
gh secret list

# Définir le secret (invite la valeur)
gh secret set MY_SECRET

# Définir le secret à partir de l'environnement
echo "$MY_SECRET" | gh secret set MY_SECRET

# Définir le secret pour un environnement spécifique
gh secret set MY_SECRET --env production

# Définir le secret pour une organisation
gh secret set MY_SECRET --org orgname

# Supprimer le secret
gh secret delete MY_SECRET

# Supprimer de l'environnement
gh secret delete MY_SECRET --env production

Variables Actions (gh variable)

# Lister les variables
gh variable list

# Définir la variable
gh variable set MY_VAR "some-value"

# Définir la variable pour un environnement
gh variable set MY_VAR "value" --env production

# Définir la variable pour une organisation
gh variable set MY_VAR "value" --org orgname

# Obtenir la valeur de la variable
gh variable get MY_VAR

# Supprimer la variable
gh variable delete MY_VAR

# Supprimer de l'environnement
gh variable delete MY_VAR --env production

Projets (gh project)

# Lister les projets
gh project list

# Lister pour un propriétaire
gh project list --owner owner

# Projets ouverts
gh project list --open

# Afficher le projet
gh project view 123

# Afficher les éléments du projet
gh project view 123 --format json

# Créer un projet
gh project create --title "Mon Projet"

# Créer dans une organisation
gh project create --title "Projet" --org orgname

# Créer avec un fichier Readme
gh project create --title "Projet" --readme "Description ici"

# Modifier le projet
gh project edit 123 --title "Nouveau titre"

# Supprimer le projet
gh project delete 123

# Fermer le projet
gh project close 123

# Copier le projet
gh project copy 123 --owner target-owner --title "Copie"

# Marquer comme template
gh project mark-template 123

# Lister les champs
gh project field-list 123

# Créer un champ
gh project field-create 123 --title "Statut" --datatype single_select

# Supprimer le champ
gh project field-delete 123 --id 456

# Lister les éléments
gh project item-list 123

# Créer un élément
gh project item-create 123 --title "Nouvel élément"

# Ajouter un élément au projet
gh project item-add 123 --owner-owner --repo repo --issue 456

# Modifier un élément
gh project item-edit 123 --id 456 --title "Titre mis à jour"

# Supprimer un élément
gh project item-delete 123 --id 456

# Archiver un élément
gh project item-archive 123 --id 456

# Lier les éléments
gh project link 123 --id 456 --link-id 789

# Délier les éléments
gh project unlink 123 --id 456 --link-id 789

# Afficher le projet dans le navigateur
gh project view 123 --web

Versions (gh release)

# Lister les versions
gh release list

# Afficher la dernière version
gh release view

# Afficher une version spécifique
gh release view v1.0.0

# Afficher dans le navigateur
gh release view v1.0.0 --web

# Créer une version
gh release create v1.0.0 \
  --notes "Notes de version ici"

# Créer une version avec notes depuis un fichier
gh release create v1.0.0 --notes-file notes.md

# Créer une version avec une cible
gh release create v1.0.0 --target main

# Créer une version en tant que brouillon
gh release create v1.0.0 --draft

# Créer une version préalable
gh release create v1.0.0 --prerelease

# Créer une version avec un titre
gh release create v1.0.0 --title "Version 1.0.0"

# Télécharger l'actif de la version
gh release upload v1.0.0 ./file.tar.gz

# Télécharger plusieurs actifs
gh release upload v1.0.0 ./file1.tar.gz ./file2.tar.gz

# Télécharger avec une étiquette (sensible à la casse)
gh release upload v1.0.0 ./file.tar.gz --casing

# Supprimer une version
gh release delete v1.0.0

# Supprimer avec nettoyage de tag
gh release delete v1.0.0 --yes

# Supprimer un actif spécifique
gh release delete-asset v1.0.0 file.tar.gz

# Télécharger les actifs de la version
gh release download v1.0.0

# Télécharger un actif spécifique
gh release download v1.0.0 --pattern "*.tar.gz"

# Télécharger dans un répertoire
gh release download v1.0.0 --dir ./downloads

# Télécharger l'archive (zip/tar)
gh release download v1.0.0 --archive zip

# Modifier la version
gh release edit v1.0.0 --notes "Notes mises à jour"

# Vérifier la signature de la version
gh release verify v1.0.0

# Vérifier un actif spécifique
gh release verify-asset v1.0.0 file.tar.gz

Gists (gh gist)

# Lister les gists
gh gist list

# Lister tous les gists (y compris privés)
gh gist list --public

# Limiter les résultats
gh gist list --limit 20

# Afficher un gist
gh gist view abc123

# Afficher les fichiers du gist
gh gist view abc123 --files

# Créer un gist
gh gist create script.py

# Créer un gist avec une description
gh gist create script.py --desc "Mon script"

# Créer un gist public
gh gist create script.py --public

# Créer un gist multi-fichier
gh gist create file1.py file2.py

# Créer à partir de stdin
echo "print('hello')" | gh gist create

# Modifier un gist
gh gist edit abc123

# Supprimer un gist
gh gist delete abc123

# Renommer le fichier du gist
gh gist rename abc123 --filename old.py new.py

# Cloner un gist
gh gist clone abc123

# Cloner dans un répertoire
gh gist clone abc123 my-directory

Codespaces (gh codespace)

# Lister les codespaces
gh codespace list

# Créer un codespace
gh codespace create

# Créer avec un dépôt spécifique
gh codespace create --repo owner/repo

# Créer avec une branche
gh codespace create --branch develop

# Créer avec une machine spécifique
gh codespace create --machine premiumLinux

# Afficher les détails du codespace
gh codespace view

# Se connecter en SSH au codespace
gh codespace ssh

# Se connecter en SSH avec une commande spécifique
gh codespace ssh --command "cd /workspaces && ls"

# Ouvrir le codespace dans le navigateur
gh codespace code

# Ouvrir dans VS Code
gh codespace code --codec

# Ouvrir avec un chemin spécifique
gh codespace code --path /workspaces/repo

# Arrêter le codespace
gh codespace stop

# Supprimer le codespace
gh codespace delete

# Afficher les journaux
gh codespace logs

--tail 100

# Afficher les ports
gh codespace ports

# Transférer le port
gh codespace cp 8080:8080

# Reconstruire le codespace
gh codespace rebuild

# Modifier le codespace
gh codespace edit --machine standardLinux

# Support Jupyter
gh codespace jupyter

# Copier des fichiers vers/depuis le codespace
gh codespace cp file.txt :/workspaces/file.txt
gh codespace cp :/workspaces/file.txt ./file.txt

Organisations (gh org)

# Lister les organisations
gh org list

# Lister pour un utilisateur
gh org list --user username

# Sortie JSON
gh org list --json login,name,description

# Afficher l'organisation
gh org view orgname

# Afficher les membres de l'organisation
gh org view orgname --json members --jq '.members[] | .login'

Recherche (gh search)

# Rechercher du code
gh search code "TODO"

# Rechercher dans un dépôt spécifique
gh search code "TODO" --repo owner/repo

# Rechercher des commits
gh search commits "fix bug"

# Rechercher des problèmes
gh search issues "label:bug state:open"

# Rechercher des PR
gh search prs "is:open is:pr review:required"

# Rechercher des dépôts
gh search repos "stars:>1000 language:python"

# Limiter les résultats
gh search repos "topic:api" --limit 50

# Sortie JSON
gh search repos "stars:>100" --json name,description,stargazers

# Trier les résultats
gh search repos "language:rust" --order desc --sort stars

# Rechercher avec des extensions
gh search code "import" --extension py

# Recherche web (ouvrir dans le navigateur)
gh search prs "is:open" --web

Étiquettes (gh label)

# Lister les étiquettes
gh label list

# Créer une étiquette
gh label create bug --color "d73a4a" --description "Quelque chose ne fonctionne pas"

# Créer avec une couleur hexadécimale
gh label create enhancement --color "#a2eeef"

# Modifier une étiquette
gh label edit bug --name "bug-report" --color "ff0000"

# Supprimer une étiquette
gh label delete bug

# Cloner les étiquettes à partir du dépôt
gh label clone owner/repo

# Cloner dans un dépôt spécifique
gh label clone owner/repo --repo target/repo

Clés SSH (gh ssh-key)

# Lister les clés SSH
gh ssh-key list

# Ajouter une clé SSH
gh ssh-key add ~/.ssh/id_rsa.pub --title "Mon ordinateur portable"

# Ajouter une clé avec un type
gh ssh-key add ~/.ssh/id_ed25519.pub --type "authentication"

# Supprimer une clé SSH
gh ssh-key delete 12345

# Supprimer par titre
gh ssh-key delete --title "Mon ordinateur portable"

Clés GPG (gh gpg-key)

# Lister les clés GPG
gh gpg-key list

# Ajouter une clé GPG
gh gpg-key add ~/.ssh/id_rsa.pub

# Supprimer une clé GPG
gh gpg-key delete 12345

# Supprimer par ID de clé
gh gpg-key delete ABCD1234

Statut (gh status)

# Afficher l'aperçu du statut
gh status

# Statut pour des dépôts spécifiques
gh status --repo owner/repo

# Sortie JSON
gh status --json

Configuration (gh config)

# Lister toute la configuration
gh config list

# Obtenir une valeur spécifique
gh config get editor

# Définir une valeur
gh config set editor vim

# Définir le protocole git
gh config set git_protocol ssh

# Effacer le cache
gh config clear-cache

# Définir le comportement des invites
gh config set prompt disabled
gh config set prompt enabled

Extensions (gh extension)

# Lister les extensions installées
gh extension list

# Rechercher des extensions
gh extension search github

# Installer une extension
gh extension install owner/extension-repo

# Installer depuis une branche
gh extension install owner/extension-repo --branch develop

# Mettre à jour une extension
gh extension upgrade extension-name

# Supprimer une extension
gh extension remove extension-name

# Créer une nouvelle extension
gh extension create my-extension

# Parcourir les extensions
gh extension browse

# Exécuter la commande d'une extension
gh extension exec my-extension --arg value

Alias (gh alias)

# Lister les alias
gh alias list

# Définir un alias
gh alias set prview 'pr view --web'

# Définir un alias shell
gh alias set co 'pr checkout' --shell

# Supprimer un alias
gh alias delete prview

# Importer des alias
gh alias import ./aliases.sh

Requêtes API (gh api)

# Effectuer une requête API
gh api /user

# Requête avec méthode
gh api --method POST /repos/owner/repo/issues \
  --field title="Titre du problème" \
  --field body="Corps du problème"

# Requête avec en-têtes
gh api /user \
  --header "Accept: application/vnd.github.v3+json"

# Requête avec pagination
gh api /user/repos --paginate

# Sortie brute (pas de formatage)
gh api /user --raw

# Inclure les en-têtes en sortie
gh api /user --include

# Mode silencieux (pas de sortie de progrès)
gh api /user --silent

# Entrée depuis un fichier
gh api --input request.json

# Requête jq sur la réponse
gh api /user --jq '.login'

# Champ de la réponse
gh api /repos/owner/repo --jq '.stargazers_count'

# GitHub Enterprise
gh api /user --hostname enterprise.internal

# Requête GraphQL
gh api graphql \
  -f query='
  {
    viewer {
      login
      repositories(first: 5) {
        nodes {
          name
        }
      }
    }
  }'

Ensembles de règles (gh ruleset)

# Lister les ensembles de règles
gh ruleset list

# Afficher un ensemble de règles
gh ruleset view 123

# Vérifier un ensemble de règles
gh ruleset check --branch feature

# Vérifier un dépôt spécifique
gh ruleset check --repo owner/repo --branch main

Attestations (gh attestation)

# Télécharger une attestation
gh attestation download owner/repo \
  --artifact-id 123456

# Vérifier une attestation
gh attestation verify owner/repo

# Obtenir la racine de confiance
gh attestation trusted-root

Complément (gh completion)

# Générer le complément de shell
gh completion -s bash > ~/.gh-complete.bash
gh completion -s zsh > ~/.gh-complete.zsh
gh completion -s fish > ~/.gh-complete.fish
gh completion -s powershell > ~/.gh-complete.ps1

# Instructions spécifiques au shell
gh completion --shell=bash
gh completion --shell=zsh

Avant-première (gh preview)

# Lister les fonctionnalités en avant-première
gh preview

# Exécuter le script en avant-première
gh preview prompter

Tâches d'agent (gh agent-task)

# Lister les tâches d'agent
gh agent-task list

# Afficher une tâche d'agent
gh agent-task view 123

# Créer une tâche d'agent
gh agent-task create --description "Ma tâche"

Drapeaux globaux

Drapeau Description
--help / -h Afficher l'aide pour la commande
--version Afficher la version de gh
--repo [HOST/]OWNER/REPO Sélectionner un autre dépôt
--hostname HOST Nom d'hôte GitHub
--jq EXPRESSION Filtrer la sortie JSON
--json FIELDS Sortie JSON avec les champs spécifiés
--template STRING Formater JSON en utilisant le template
--web Ouvrir dans le navigateur
--paginate Effectuer les appels API supplémentaires
--verbose Afficher la sortie détaillée
--debug Afficher la sortie de débogage
--timeout SECONDS Durée maximale de la requête API
--cache CACHE Contrôle du cache (default, force, bypass)

Formatage de la sortie

Sortie JSON

# JSON basique
gh repo view --json name,description

# Champs imbriqués
gh repo view --json owner,name --jq '.owner.login + "/" + .name'

# Opérations sur les tableaux
gh pr list --json number,title --jq '.[] | select(.number > 100)'

# Requêtes complexes
gh issue list --json number,title,labels \
  --jq '.[] | {number, title: .title, tags: [.labels[].name]}'

Sortie de template

# Template personnalisé
gh repo view \
  --template '{{.name}}: {{.description}}'

# Template multi-lignes
gh pr view 123 \
  --template 'Titre : {{.title}}
Auteur : {{.author.login}}
Statut : {{.state}}
'

Flux de travail courants

Créer une PR à partir d'un problème

# Créer une branche à partir d'un problème
gh issue develop 123 --branch feature/issue-123

# Effectuer des modifications, commiter, pousser
git add .
git commit -m "Corriger le problème #123"
git push

# Créer une PR liant au problème
gh pr create --title "Corriger #123" --body "Ferme #123"

Opérations en masse

# Fermer plusieurs problèmes
gh issue list --search "label:stale" \
  --json number \
  --jq '.[].number' | \
  xargs -I {} gh issue close {} --comment "Fermeture en raison de l'obsolescence"

# Ajouter une étiquette à plusieurs PR
gh pr list --search "review:required" \
  --json number \
  --jq '.[].number' | \
  xargs -I {} gh pr edit {} --add-label needs-review

Flux de configuration du dépôt

# Créer un dépôt avec la configuration initiale
gh repo create my-project --public \
  --description "Mon super projet" \
  --clone \
  --gitignore python \
  --license mit

cd my-project

# Configurer les branches
git checkout -b develop
git push -u origin develop

# Créer des étiquettes
gh label create bug --color "d73a4a" --description "Signalement de bug"
gh label create enhancement --color "a2eeef" --description "Demande de fonctionnalité"
gh label create documentation --color "0075ca" --description "Documentation"

Flux de travail CI/CD

# Exécuter le workflow et attendre
RUN_ID=$(gh workflow run ci.yml --ref main --jq '.databaseId')

# Surveiller l'exécution
gh run watch "$RUN_ID"

# Télécharger les artefacts après l'achèvement
gh run download "$RUN_ID" --dir ./artifacts

Flux de synchronisation du fork

# Fork le dépôt
gh repo fork original/repo --clone

cd repo

# Ajouter le remote upstream
git remote add upstream https://github.com/original/repo.git

# Synchroniser le fork
gh repo sync

# Ou synchronisation manuelle
git fetch upstream
git checkout main
git merge upstream/main
git push origin main

Configuration de l'environnement

Intégration du shell

# Ajouter à ~/.bashrc ou ~/.zshrc
eval "$(gh completion -s bash)"  # ou zsh/fish

# Créer des alias utiles
alias gs='gh status'
alias gpr='gh pr view --web'
alias gir='gh issue view --web'
alias gco='gh pr checkout'

Configuration Git

# Utiliser gh comme gestionnaire d'authentifiants
gh auth setup-git

# Définir gh comme défaut pour les opérations de dépôt
git config --global credential.helper 'gh !gh auth setup-git'

# Ou manuellement
git config --global credential.helper github

Bonnes pratiques

  1. Authentification : Utiliser les variables d'environnement pour l'automatisation

    export GH_TOKEN=$(gh auth token)
  2. Dépôt par défaut : Définir un dépôt par défaut pour éviter les répétitions

    gh repo set-default owner/repo
  3. Parsing JSON : Utiliser jq pour l'extraction de données complexes

    gh pr list --json number,title --jq '.[] | select(.title | contains("fix"))'
  4. Pagination : Utiliser --paginate pour les grands ensembles de résultats

    gh issue list --state all --paginate
  5. Mise en cache : Utiliser le contrôle du cache pour les données fréquemment accédées

    gh api /user --cache force

Obtenir de l'aide

# Aide générale
gh --help

# Aide pour une commande
gh pr --help
gh issue create --help

# Rubriques d'aide
gh help formatting
gh help environment
gh help exit-codes
gh help accessibility

Références

Skills similaires