Référence
Politique d'interactivité
gh fait déjà ce qu'il faut dans les contextes non-TTY : il ignore le pager,
supprime les couleurs ANSI, et échoue rapidement avec un message utile au lieu
d'une invite (ex. must provide --title and --body when not running interactively).
Vous n'avez pas besoin de définir GH_PAGER ou de passer --no-pager (un tel
drapeau n'existe pas).
Analyse JSON
La sortie humaine de gh est formatée en colonnes. Si vous voulez des données
structurées :
- Ajoutez
--json champ1,champ2,...pour une sortie structurée. - Exécutez une commande avec
--jsonet sans liste de champs pour afficher l'ensemble complet des champs disponibles, puis choisissez ceux dont vous avez besoin. - Utilisez
--jq '<expression>'pour filtrer sans passer par unjqséparé. - Utilisez
--template '<golang-template>'(avec--json) lorsque vous voulez une sortie textuelle formatée. Notez que--template/-Tentre en conflit avec un drapeau body-template sur certaines commandes (ex.gh pr create -T,gh issue create -T) ; vérifiez toujours--helpavant de supposer lequel vous utilisez.
Pagination et troncature silencieuse
Les commandes de liste limitent les résultats.
gh issue list,gh pr list,gh search ...: passez-L N(--limit N). La valeur par défaut est généralement 30.gh issue list/gh pr listn'exposent pas de totaux agrégés commetotalCountvia--json. Si vous avez besoin d'un total exact, utilisezgh api graphqlpour interrogertotalCount; sinon, traitez-Lcomme la limite pour l'appel courant.- Pour les appels API bruts, utilisez
gh api --paginate <chemin>. Combinez avec--jqet (optionnellement)--slurppour assembler un tableau.
Ciblage de dépôt
gh déduit le dépôt à partir des remotes git du répertoire de travail courant.
Passez --repo PROPRIÉTAIRE/DÉPÔT (-R) pour remplacer le dépôt résolu du CWD.
Recherche vs liste
gh search issues|prs|code|repos|commits|usersutilise l'index de recherche de GitHub et accepte la syntaxe de recherche complète (is:open,author:,label:,repo:owner/name,in:title, ...). Passez toute la requête en une seule chaîne entre guillemets, de la même manière que pour--search:gh search issues "is:open author:foo repo:cli/cli". Préférez-la pour tout ce qui est multi-dépôt ou filtré par auteur/étiquette.gh issue list --search "..."etgh pr list --search "..."acceptent la même syntaxe mais sont limités à un dépôt.
Repli vers gh api pour tout ce que --json n'expose pas
Parfois, des données utiles ne sont pas disponibles via les commandes typées. Exemples :
- Les commentaires de fil de révision sur une PR :
gh api repos/{owner}/{repo}/pulls/{n}/comments(le drapeau--commentssurgh pr viewmontre uniquement les commentaires au niveau du ticket). - GraphQL arbitraire :
gh api graphql -f query='...' -F var=valeur. - Raccourcis REST :
gh api repos/{owner}/{repo}/...- notez que le placeholder{owner}/{repo}est rempli automatiquement lorsqu'il est exécuté depuis un dépôt avec des remotes détectées ; passez-les littéralement si vous voulez de la déterminisme.
Authentification
gh auth statusaffiche le(s) hôte(s) actif(s), l'utilisateur, et quelle variable d'environnement (le cas échéant) est honorée.gh auth status --jsonest pris en charge.
Autres remarques
gh pr checkout <n>change de branche. Utilisezgh pr diff <n>ough pr view <n>si vous avez seulement besoin de lire.NO_COLOR,CLICOLOR_FORCE, etGH_FORCE_TTYsont honorés. DéfinissezGH_FORCE_TTY=1si vous voulez une sortie de style TTY (couleurs, tableaux, le pager, interactivité) dans un environnement d'agent ; laissez-le non défini sauf si nécessaire.