Git
Chapters ▾ 2nd Edition

A1.1 Appendix A: Git dans d’autres environnements - Interfaces graphiques

Si vous avez lu le livre dans son intégralité, vous avez appris beaucoup sur son utilisation à partir de la ligne de commande. Vous pouvez travailler avec des fichiers locaux, connecter vos dépôts avec d’autres à travers un réseau et travailler efficacement avec d’autres personnes. Mais l’histoire ne s’arrête pas ici ; Git est habituellement utilisé comme sous-partie d’un écosystème plus grand et le terminal n’est pas toujours le meilleur moyen d’interagir dans ce cadre. Nous allons maintenant jeter un œil à certains des autres types d’environnements où Git s’avère utile ainsi que la manière dont d’autres applications (dont la vôtre) intègrent Git.

Interfaces graphiques

L’environnement natif de Git est le terminal. Les nouvelles fonctionnalités y apparaissent en premier et c’est seulement à la ligne de commande que vous disposez de tout le pouvoir de Git. Mais le texte pur n’est pas toujours le meilleur choix pour toutes les tâches ; quelques fois, une représentation visuelle est préférable et certains utilisateurs sont beaucoup plus à l’aise avec une interface pointer-cliquer.

Il est important de noter que différentes interfaces sont adaptées à différents modes de travail. Certains clients n’exposent qu’une partie soigneusement choisie des fonctionnalités de Git, pour supporter une façon spécifique de travailler que l’auteur considère efficace. Vu sous cet angle, aucun outil ne peut être qualifié de « meilleur » qu’un autre, il est simplement plus adapté à l’utilisation désirée. Il faut remarquer aussi qu’il n’y rien que ces outils graphiques ne fassent que l’interface en ligne de commande ne puisse faire ; la ligne de commande reste l’interface qui vous donne le plus de puissance et de contrôle sur vos dépôts.

gitk et git-gui

Quand vous installez Git, vous obtenez aussi ses outils visuels, gitk et git-gui.

gitk est l’outil de visualisation graphique d’historique. Voyez-le comme une interface GUI puissante par-dessus git log et git grep. C’est l’outil à utiliser lorsque vous essayez de trouver un événement passé ou de visualiser l’historique de votre projet.

Gitk est plus facile à invoquer depuis la ligne de commande. Positionnez-vous simplement dans le dépôt Git et tapez :

$ gitk [options de git log]

Gitk accepte de nombreuses options de ligne de commande, dont la plupart sont passées directement à la commande git log sous-jacente. L’une des plus intéressantes est probablement d’ajouter l’option --all qui indique à gitk de montrer tous les commits joignables depuis n’importe quelle référence, et pas seulement HEAD. L’interface de Gitk ressemble à ceci :

Le visualisateur d'historique `gitk`.
Figure 153. Le visualisateur d’historique gitk.

Dans la partie supérieure, une zone ressemble à la sortie de git log --graph. Chaque point représente un commit, les lignes représentent les liens de parenté et les références apparaissent dans des rectangles colorés. Le point jaune représente HEAD et le point rouge représente les modifications qui ne sont pas validées. Dans la partie basse, on visualise le commit sélectionné : les commentaires et le patch sur la gauche et une vue en résumé sur la droite. Au milieu se trouve un ensemble de composants graphiques utilisés pour rechercher dans l’historique.

git-gui, par contre est un outil permettant de ciseler les commits. Lui aussi est plus facile à invoquer en ligne de commande :

$ git gui

Et il ressemble à ceci :

L'outil d'aide à la validation `git-gui`.
Figure 154. L’outil d’aide à la validation git-gui.

Sur la gauche, il y a l’index ; les modifications non indexées sont en haut, les modifications indexées en bas. Vous pouvez déplacer des fichiers entiers entre les deux états en cliquant sur leurs icônes ou vous pouvez sélectionner un fichier à visualiser en cliquant sur son nom.

La vue diff en haut à droite montre les modifications pour le fichier sélectionné. Vous pouvez indexer des sections individuelles (ou des lignes individuelles) en cliquant-droit dans cette zone.

La zone de message et d’action est en bas à droite. Tapez votre message dans la boîte à texte et cliquez « Commiter » pour réaliser une action similaire à git commit. Vous pouvez aussi choisir de corriger le commit précédent en sélectionnant le bouton radio « Corriger dernier commit », ce qui met à jour la zone « Modifs. indexées » avec le contenu du dernier commit. Ensuite, vous pouvez simplement indexer ou désindexer certaines modifications, modifier le message de validation et cliquer à nouveau sur le bouton « Commiter » pour remplacer l’ancien commit par le nouveau.

gitk et git-gui sont des exemples d’outils orientés tâche. Chacun est taillé pour un objectif spécifique (visualiser l’historique et créer des commits, respectivement) en omettant certaines fonctionnalités non-nécessaires à cette tâche.

GitHub pour Mac et Windows

GitHub a créé deux clients Git orientés flux de travail : un pour Windows et un pour Mac. Ces clients sont un bon exemple d’outils orientés flux de travail — plutôt que d’exposer toutes les fonctionnalités de Git, ils se focalisent sur un sous-ensemble sélectionné de fonctions couramment utilisées qui s’accordent. Ils ressemblent à ceci :

GitHub pour Mac.
Figure 155. GitHub pour Mac.
GitHub pour Windows.
Figure 156. GitHub pour Windows.

Ils sont pensés pour se ressembler et fonctionner de la même manière, donc nous les traiterons comme un seul produit dans ce chapitre. Nous n’allons pas explorer en profondeur ces outils (ils ont leur propre documentation), mais un tour rapide de la vue « changes » (qui est celle sur laquelle vous passerez le plus de temps) montre que tout est en ordre.

  • Sur la gauche, il y a la liste des dépôts que le client suit ; vous pouvez ajouter un dépôt (soit en le clonant, soit en l’attachant localement) en cliquant sur l’icône « + » en haut de la zone.

  • Au centre, il y a la zone d’entrée de commit qui vous permet d’entrer un message de validation et de sélectionner les fichiers qui devraient être inclus. Sous Windows, l’historique de validation est affiché directement en dessous ; sous Mac, c’est un onglet séparé.

  • À droite, il y a une vue de diff qui montre ce qui a changé dans votre répertoire de travail ou les modifications qui ont été incluses dans le commit sélectionné.

  • La dernière chose à noter est le bouton « Sync » en haut à droite qui est le moyen principal d’interagir via le réseau.

Note

Vous n’avez pas besoin d’un compte GitHub pour utiliser ces outils. Bien qu’ils soient pensés pour mettre en lumière le service et la méthode de travail de GitHub, ils fonctionneront parfaitement avec n’importe quel dépôt et dialogueront sans problème avec n’importe quel serveur Git.

Installation

GitHub pour Windows peut être téléchargé depuis https://windows.github.com et GitHub pour Mac depuis https://mac.github.com. Quand les applications sont lancées pour la première fois, elles vous guident à travers le paramétrage initial de Git, tel que la configuration de votre nom et de votre adresse de courriel, et toutes deux définissent un paramétrage par défaut sans danger concernant différentes options de configuration telles que les caches d’identification et le comportement pour les fins de ligne.

Les deux applications sont « permanentes » — les mises à jour sont téléchargées et appliquées en tâche de fond pendant que l’application est ouverte. Elles incluent une version autonome de Git, ce qui signifie que vous n’aurez probablement pas à vous soucier de le mettre à jour. Sous Windows, le client inclut un raccourci pour lancer Powershell avec Posh-git, dont nous parlerons plus loin.

L’étape suivante consiste à fournir à l’outil des dépôts avec lesquels travailler. Le client vous affiche une liste de dépôts auxquels vous avez accès sur GitHub et que vous pouvez cloner en une étape. Si vous avez déjà un dépôt local, glissez son répertoire depuis le Finder ou Windows Explorer dans la fenêtre de client GitHub et il sera inclus dans la liste des dépôts.

Gestion recommandée du travail

Une fois installé et configuré, le client GitHub peut être utilisé pour de nombreuses tâches usuelles. La manière de travailler avec cet outil est quelques fois appelée le « GitHub Flow ». Nous traitons ceci plus en détail dans Processus GitHub, mais l’esprit général est que a) vous validerez vos modifications dans une branche et b) vous synchroniserez avec un dépôt distant assez régulièrement.

La gestion de branche est un des domaines pour lesquels les deux outils divergent. Sous Mac, il y a un bouton en haut de la fenêtre pour créer de nouvelles branches :

Le bouton « _Create Branch_ » sous Mac.
Figure 157. Le bouton « Create Branch » sous Mac.

Sous Windows, cela se fait en tapant le nom de la branche dans la zone de saisie de bascule de branche :

Créer une branche sous Windows.
Figure 158. Créer une branche sous Windows.

Une fois votre branche créée, ajouter des nouveaux commits est assez simple. Faites des modifications dans votre répertoire de travail et quand vous revenez dans la fenêtre du client GitHub, elle vous indiquera quels fichiers ont changé. Entrez un message de validation, sélectionnez les fichiers que vous souhaitez inclure et cliquez sur le bouton « Commit » (ctrl-entrée ou ⌘-entrée).

La manière principale d’interagir avec les autres dépôts à travers le réseau passe par la fonctionnalité « Sync ». Git dispose d’opérations différentes pour pousser, récupérer, fusionner et rebaser, mais les clients GitHub les réduisent en une seule fonctionnalité à plusieurs étapes. Voici ce qui se passe quand vous cliquez sur le bouton « Sync » :

  1. git pull --rebase. Si cela échoue à cause d’un conflit de fusion, revenir à git pull --no-rebase.

  2. git push.

C’est la séquence la plus habituelle pour les commandes de réseau quand vous travaillez dans ce mode, donc les réduire à une seule commande fait gagner du temps.

Résumé

Ces outils sont très adaptés au mode de travail pour lequel ils sont pensés. Les développeurs, mais aussi les non-développeurs peuvent collaborer sur un projet en peu de temps et un grand nombre des meilleures pratiques pour ce genre de flux de travail sont saisies dans les outils. Cependant, si votre gestion du développement est différente ou si vous voulez plus de contrôle sur comment et quand les opérations de réseau sont réalisées, nous vous recommandons d’utiliser un autre client ou la ligne de commande.

Autres GUIs

Il existe un certain nombre d’autres clients Git graphiques et ils s’étendent depuis les outils très spécialisés, à fonction unique jusqu’aux applications qui cherchent à exposer tout ce que Git peut faire. Le site officiel Git présente une liste sélectionnée des clients les plus populaires sur http://git-scm.com/downloads/guis. Une liste plus longue est disponible sur le site du wiki Git sur https://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#Graphical_Interfaces.