Depuis des années, GitHub est l'une des plateformes mettant le plus à l'honneur Git et ses possibilités. Elle le complète par ses fonctionnalités et les outils mis à disposition des développeurs. Sa CLI 1.0 est désormais disponible, mais qu'apporte-t-elle ?
Git est un outil de gestion de versions comme il en existait d'autres avant lui : Bazaar, Mercurial ou encore SVN. Il permet de gérer l'évolution de fichiers et documents de manière efficace. Il est principalement utilisé dans le cadre du développement de logiciels libres, mais peut aussi trouver son intérêt pour de la documentation, la loi, etc.
Git, un succès distribué
Outre le fait qu'il ait été pensé par Linus Torvalds pour le développement du noyau Linux dès 2005, l'un de ses principaux atouts était sa conception distribuée, ne nécessitant pas de serveur central. Assez ironiquement, il doit en partie son succès à celui de la plateforme GitHub, rachetée par Microsoft en juin 2018.
Permettant à chacun d'héberger gratuitement les données des projets open source ou non, elle proposait de faire de même en équipe contre un abonnement payant. Un modèle qui a évolué depuis. Mais GitHub est surtout un service bien pensé, complet, pouvant être vu par certains aspects comme un client Git en ligne, survitaminé.
Il n'est bien sûr pas seul, avec des concurrents comme GitLab. Gérée par une société privée américaine, cette plateforme se distingue par la publication de son code source. Chacun peut ainsi monter son propre GitLab sur un serveur, un NAS, etc. C'est ce que fait Framasoft avec Framagit.
GitHub se distingue particulièrement dans l'étendue de son écosystème et de ses outils qui viennent renforcer Git. C'est le cas de son interface CLI, qui vient de passer en version 1.0.
Notre dossier sur la maîtrise de Git et de ses plateformes :
- Open source, libre et communs : contribuer ne nécessite pas de développer
- Apprenez à utiliser Git : les bases pour l'évolution d'un document
- Git remote : comment héberger vos documents et codes source sur un serveur
- Git : comment travailler avec plusieurs remotes
- Fork et pull request : la participation open source par l'exemple
- GitHub CLI 1.0 est disponible : comment l'installer et l'utiliser
GitHub : un superset de Git
La principale force de GitHub est aussi, d'une certaine manière, son principal défaut : elle va bien plus loin que ce que propose Git. Outre la consultation de fichiers et leurs versions, on peut y publier de la documentation, un wiki, un site statique, gérer des discussions autour du projet, les remontées d'erreurs et leur correction, les pull-requests, des processus d'intégration et de déploiement continus, héberger les différentes releases de son application, etc.
Son importance est devenue telle qu'il s'agit presque d'un réseau social pour développeurs, chacun y peaufinant son profil comme on le fait avec un CV sur LinkedIn (qui appartient aussi à Microsoft).
Certains services sont plus spécifiques, comme les Gists, des snippets que l'on peut facilement partager et qui sont eux aussi « versionnés ». Ils ne sont pas gérés sous forme de dépôt comme dans le fonctionnement classique de Git. Ils ne peuvent donc pas être utilisés avec son client en ligne de commandes ou autres. Il faut une intégration propre à GitHub, aucun standard n'étant défini pour la gestion de telles portions de code et leur partage en ligne.
On trouve ainsi des clients pour des environnements de développement comme Atom, Notepad++ ou Visual Studio Code. Les développeurs apprécient aussi de pouvoir gérer de tels modules via la ligne de commande ou des scripts. Là aussi il existe différents outils exploitant les API de GitHub. Mais jusqu'à maintenant, aucun officiel.
C'est pour cela que le travail sur GitHub CLI (Command Line Interface) a commencé il y a quelques mois.

Un client multiplateforme pour terminal
L'idée est de permettre de profiter des possibilités de GitHub depuis un simple terminal, comme pour Git. Il devient ainsi possible d'automatiser simplement certaines tâches, sans avoir à interagir avec une API.
Il fonctionne aussi bien pour les comptes GitHub.com que ceux de la version Enterprise Server. Disponible pour Linux, macOS et Windows, il s'installe facilement, notamment via différents gestionnaires de paquets. Il est open source, sous licence MIT. Tous les détails sont donnés par ici.
Notez que même si ce n'est pas mentionné, il peut être installé via winget.
La procédure est simple et rapide. Bien entendu, pour profiter de l'ensemble des fonctionnalités de l'outil, il faudra que Git soit installé et configuré sur votre machine. Si vous êtes utilisateur de GitHub, c'est sans doute votre cas.
Une configuration rapide, un outil déjà complet
L'outil s'utilise avec l'exécutable gh
, un nom volontairement court comme git
. La première étape à suivre est la connexion à votre compte GitHub. Elle peut passer par le partage d'un jeton de sécurité placé en variable d'environnement (GITHUB_TOKEN) ou votre navigateur. Nous avons opté pour la seconde méthode :
gh auth login
Un code de deux fois quatre caractères alphanumériques vous sera donné et une fenêtre du navigateur ouverte. Une fois connecté sur GitHub, vous devrez entrer le code pour que la session soit initiée dans votre terminal. Après avoir choisi le protocole de connexion (HTTPS ou SSH), GitHub CLI sera exploitable.
Par exemple, pour obtenir la liste des Gists de votre compte (gh gist list
) :
Par défaut, les dix plus récents sont affichés. Vous pouvez modifier ce nombre, n'afficher que ceux publics ou privés. Pour savoir comment faire, il est possible d'afficher l'aide, disponible pour chaque (sous-)commande :
gh gist list --help
Via GitHub CLI, vous pouvez interagir avec différentes sections du site : issue, pull-requests (pr), release ou encore repo (les dépôts), donc créer un projet, le cloner/forker ou simplement le voir. Certaines actions seront ainsi redondantes avec Git, mais fonctionnant de manière simplifiée. Par exemple, pour cloner Kimetrak :
gh clone davlgd/kimetrak
L'URL complète n'est pas nécessaire, il suffit de préciser le nom d'utilisateur et du dépôt GitHub. Rien ne vient par contre remplacer tout ce qui touche au cœur du workflow Git et qui n'est pas spécifique à GitHub, c'est bien normal. Les deux outils doivent se complèter, pas s'opposer.
La finition de l'ensemble est plutôt réussie. Les interactions avec l'utilisateur claires et bien gérées, des icônes rendent le tout agréable à l'œil, même si cela déplaira sans doute à certains puristes. Les possibilités offertes sont nombreuses, même si l'intégration à GitHub pourrait aller plus loin dans de futures versions.
Alias, API et compagnie
Par exemple, la création d'un Gist peut se faire depuis un fichier ou la sortie STDIN via une commande pipe. Ils sont privés par défaut, mais peuvent directement être déclarés comme publics, avec une description. L'édition utilise l'outil par défaut du système et peut concerner un fichier en particulier, etc.
Ceux qui veulent aller plus loin peuvent créer des alias. Pour simplifier par exemple le fait de lister 50 gists exclusivement publics :
gh alias set g50 "gist list --limit 50 --public"
Il vous suffira ensuite de taper :
gh g50
Et le tour est joué ! Vous pouvez à tout moment voir la liste des alias et en supprimer. Il est aussi possible d'utiliser GitHub CLI pour effectuer des appels API simplifiés. La documentation complète est disponible par ici.