-
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
10.1 Les tripes de Git - Plomberie et porcelaine
Vous êtes peut-être arrivé à ce chapitre en en sautant certains autres ou après avoir parcouru tout le reste du livre. Dans tous les cas, c’est ici que le fonctionnement interne et la mise en œuvre de Git sont abordés. Pour nous, leur apprentissage a été fondamental pour comprendre à quel point Git est utile et puissant, mais d’autres soutiennent que cela peut être source de confusion et peut être trop complexe pour les débutants. Nous en avons donc fait le dernier chapitre de ce livre pour que vous puissiez le lire tôt ou tard lors de votre apprentissage. Nous vous laissons le choix.
Maintenant que vous êtes ici, commençons. Tout d’abord, si ce n’est pas encore clair, Git est fondamentalement un système de fichiers adressable par contenu avec l’interface utilisateur d’un VCS au-dessus. Vous en apprendrez plus sur ce que cela signifie dans quelques instants.
Aux premiers jours de Git (surtout avant la version 1.5), l’interface utilisateur était beaucoup plus complexe, car elle était centrée sur le système de fichiers plutôt que sur l’aspect VCS. Ces dernières années, l’interface utilisateur a été peaufinée jusqu’à devenir aussi cohérente et facile à utiliser que n’importe quel autre système. Pour beaucoup, l’image du Git des débuts avec son interface utilisateur complexe et difficile à apprendre est toujours présente.
La couche système de fichiers adressable par contenu est vraiment géniale et nous l’aborderons dans ce chapitre. Ensuite, vous apprendrez les mécanismes de transfert ainsi que les tâches que vous serez amené à accomplir pour maintenir un dépôt.
Plomberie et porcelaine
Ce livre couvre l’utilisation de Git avec une trentaine de verbes comme checkout
, branch
, remote
…
Mais, puisque Git était initialement une boîte à outils (toolkit) pour VCS, plutôt qu’un VCS complet et convivial, il dispose de tout un ensemble d’actions pour les tâches bas niveau qui étaient conçues pour être liées dans le style UNIX ou appelées depuis des scripts.
Ces commandes sont dites commandes de « plomberie » (plumbing) et les autres, plus conviviales sont appelées « la porcelaine » (porcelain).
Les neuf premiers chapitres du livre concernent presque exclusivement les commandes de porcelaine. Par contre, dans ce chapitre, vous serez principalement confronté aux commandes de plomberie bas niveau, car elles vous donnent accès au fonctionnement interne de Git et aident à montrer comment et pourquoi Git fonctionne comme il le fait. Beaucoup de ces commandes ne sont pas faites pour être utilisées à la main sur une ligne de commande, mais sont plutôt utilisées comme briques de base pour écrire de nouveaux outils et scripts personnalisés.
Quand vous exécutez git init
dans un nouveau répertoire ou un répertoire existant, Git crée un répertoire .git
qui contient presque tout ce que Git stocke et manipule.
Si vous voulez sauvegarder ou cloner votre dépôt, copier ce seul répertoire suffirait presque.
Ce chapitre traite principalement de ce que contient ce répertoire.
Voici à quoi il ressemble :
$ ls -F1
HEAD
config*
description
hooks/
info/
objects/
refs/
Vous y verrez sans doute d’autres fichiers, mais ceci est un dépôt qui vient d’être créé avec git init
et c’est ce que vous verrez par défaut.
Le fichier description
est utilisé uniquement par le programme GitWeb, il ne faut donc pas s’en soucier.
Le fichier config
contient les options de configuration spécifiques à votre projet et le répertoire info
contient un fichier d’exclusions listant les motifs que vous souhaitez ignorer et que vous ne voulez pas mettre dans un fichier .gitignore
.
Le répertoire hooks
contient les scripts de procédures automatiques côté client ou serveur, ils sont décrits en détail dans Crochets Git.
Il reste quatre éléments importants : les fichiers HEAD
et (pas encore créé) index
, ainsi que les répertoires objects
et refs
.
Ce sont les composants principaux d’un dépôt Git.
Le répertoire objects
stocke le contenu de votre base de données, le répertoire refs
stocke les pointeurs vers les objets commit de ces données (branches), le fichier HEAD
pointe sur la branche qui est en cours dans votre répertoire de travail et le fichier index
est l’endroit où Git stocke les informations sur la zone d’attente.
Vous allez maintenant plonger en détail dans chacune de ces sections et voir comment Git fonctionne.