-
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.