-
1. Démarrage rapide
-
2. Les bases de Git
-
3. Les branches avec Git
-
4. Git sur le serveur
- 4.1 Protocoles
- 4.2 Installation de Git sur un serveur
- 4.3 Génération des clés publiques SSH
- 4.4 Mise en place du serveur
- 4.5 Démon (Daemon) Git
- 4.6 HTTP intelligent
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Git hébergé
- 4.10 Résumé
-
5. Git distribué
-
6. GitHub
-
7. Utilitaires Git
- 7.1 Sélection des versions
- 7.2 Indexation interactive
- 7.3 Remisage et nettoyage
- 7.4 Signer votre travail
- 7.5 Recherche
- 7.6 Réécrire l’historique
- 7.7 Reset démystifié
- 7.8 Fusion avancée
- 7.9 Rerere
- 7.10 Déboguer avec Git
- 7.11 Sous-modules
- 7.12 Empaquetage (bundling)
- 7.13 Replace
- 7.14 Stockage des identifiants
- 7.15 Résumé
-
8. Personnalisation de Git
- 8.1 Configuration de Git
- 8.2 Attributs Git
- 8.3 Crochets Git
- 8.4 Exemple de politique gérée par Git
- 8.5 Résumé
-
9. Git et les autres systèmes
- 9.1 Git comme client
- 9.2 Migration vers Git
- 9.3 Résumé
-
10. Les tripes de Git
- 10.1 Plomberie et porcelaine
- 10.2 Les objets de Git
- 10.3 Références Git
- 10.4 Fichiers groupés
- 10.5 La refspec
- 10.6 Les protocoles de transfert
- 10.7 Maintenance et récupération de données
- 10.8 Les variables d’environnement
- 10.9 Résumé
-
A1. Annexe A: Git dans d’autres environnements
- A1.1 Interfaces graphiques
- A1.2 Git dans Visual Studio
- A1.3 Git dans Visual Studio Code
- A1.4 Git dans IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git dans Sublime Text
- A1.6 Git dans Bash
- A1.7 Git dans Zsh
- A1.8 Git dans PowerShell
- A1.9 Résumé
-
A2. Annexe B: Embarquer Git dans vos applications
- A2.1 Git en ligne de commande
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Commandes Git
- A3.1 Installation et configuration
- A3.2 Obtention et création des projets
- A3.3 Capture d’instantané basique
- A3.4 Création de branches et fusion
- A3.5 Partage et mise à jour de projets
- A3.6 Inspection et comparaison
- A3.7 Débogage
- A3.8 Patchs
- A3.9 Courriel
- A3.10 Systèmes externes
- A3.11 Administration
- A3.12 Commandes de plomberie
A1.1 Annexe 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`.](png/gitk.png)
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`.](png/git-gui.png)
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 macOS et Windows
GitHub a créé deux clients Git orientés flux de travail : un pour Windows et un pour macOS. 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 macOS.](png/github_mac.png)
![GitHub pour Windows.](png/github_win.png)
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 macOS, 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 macOS 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 macOS, il y a un bouton en haut de la fenêtre pour créer de nouvelles branches :
![Le bouton « _Create Branch_ » sous macOS](png/branch_widget_mac.png)
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.](png/branch_widget_win.png)
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 » :
-
git pull --rebase
. Si cela échoue à cause d’un conflit de fusion, revenir àgit pull --no-rebase
. -
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 https://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.