-
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
1.1 DĂ©marrage rapide - Ă propos de la gestion de version
Ce chapitre traite du dĂ©marrage rapide avec Git. Nous commencerons par expliquer les bases de la gestion de version, puis nous parlerons de lâinstallation de Git sur votre systĂšme et finalement du paramĂ©trage pour commencer Ă lâutiliser. Ă la fin de ce chapitre vous devriez en savoir assez pour comprendre pourquoi on parle beaucoup de Git, pourquoi vous devriez lâutiliser et vous devriez en avoir une installation prĂȘte Ă lâemploi.
Ă propos de la gestion de version
Quâest-ce que la gestion de version et pourquoi devriez-vous vous en soucier ? Un gestionnaire de version est un systĂšme qui enregistre lâĂ©volution dâun fichier ou dâun ensemble de fichiers au cours du temps de maniĂšre Ă ce quâon puisse rappeler une version antĂ©rieure dâun fichier Ă tout moment. Dans les exemples de ce livre, nous utiliserons des fichiers sources de logiciel comme fichiers sous gestion de version, bien quâen rĂ©alitĂ© on puisse lâutiliser avec pratiquement tous les types de fichiers dâun ordinateur.
Si vous ĂȘtes un dessinateur ou un dĂ©veloppeur web, et que vous voulez conserver toutes les versions dâune image ou dâune mise en page (ce que vous souhaiteriez assurĂ©ment), un systĂšme de gestion de version (VCS en anglais pour Version Control System) est un outil quâil est trĂšs sage dâutiliser. Il vous permet de ramener un fichier Ă un Ă©tat prĂ©cĂ©dent, de ramener le projet complet Ă un Ă©tat prĂ©cĂ©dent, de visualiser les changements au cours du temps, de voir qui a modifiĂ© quelque chose qui pourrait causer un problĂšme, qui a introduit un problĂšme et quand, et plus encore. Utiliser un VCS signifie aussi gĂ©nĂ©ralement que si vous vous trompez ou que vous perdez des fichiers, vous pouvez facilement revenir Ă un Ă©tat stable. De plus, vous obtenez tous ces avantages avec peu de travail additionnel.
Les systĂšmes de gestion de version locaux
La mĂ©thode courante pour la gestion de version est gĂ©nĂ©ralement de recopier les fichiers dans un autre rĂ©pertoire (peut-ĂȘtre avec un nom incluant la date dans le meilleur des cas). Cette mĂ©thode est la plus courante parce que câest la plus simple, mais câest aussi la moins fiable. Il est facile dâoublier le rĂ©pertoire dans lequel vous ĂȘtes et dâĂ©crire accidentellement dans le mauvais fichier ou dâĂ©craser des fichiers que vous vouliez conserver.
Pour traiter ce problĂšme, les programmeurs ont dĂ©veloppĂ© il y a longtemps des VCS locaux qui utilisaient une base de donnĂ©es simple pour conserver les modifications dâun fichier.
Un des systĂšmes les plus populaires Ă©tait RCS, qui est encore distribuĂ© avec de nombreux systĂšmes dâexploitation aujourdâhui. Cet outil fonctionne en conservant des ensembles de patchs (câest-Ă -dire la diffĂ©rence entre les fichiers) dâune version Ă lâautre dans un format spĂ©cial sur disque ; il peut alors restituer lâĂ©tat de nâimporte quel fichier Ă nâimporte quel instant en ajoutant toutes les diffĂ©rences.
Les systÚmes de gestion de version centralisés
Le problĂšme majeur que les gens rencontrent est quâils ont besoin de collaborer avec des dĂ©veloppeurs sur dâautres ordinateurs. Pour traiter ce problĂšme, les systĂšmes de gestion de version centralisĂ©s (CVCS en anglais pour Centralized Version Control Systems) furent dĂ©veloppĂ©s. Ces systĂšmes tels que CVS, Subversion, et Perforce, mettent en place un serveur central qui contient tous les fichiers sous gestion de version, et des clients qui peuvent extraire les fichiers de ce dĂ©pĂŽt central. Pendant de nombreuses annĂ©es, cela a Ă©tĂ© le standard pour la gestion de version.
Ce schĂ©ma offre de nombreux avantages par rapport Ă la gestion de version locale. Par exemple, chacun sait jusquâĂ un certain point ce que tous les autres sont en train de faire sur le projet. Les administrateurs ont un contrĂŽle fin des permissions et il est beaucoup plus facile dâadministrer un CVCS que de gĂ©rer des bases de donnĂ©es locales.
Cependant ce systĂšme a aussi de nombreux dĂ©fauts. Le plus visible est le point unique de panne que le serveur centralisĂ© reprĂ©sente. Si ce serveur est en panne pendant une heure, alors durant cette heure, aucun client ne peut collaborer ou enregistrer les modifications issues de son travail. Si le disque dur du serveur central se corrompt, et sâil nây a pas eu de sauvegarde, vous perdez absolument tout de lâhistorique dâun projet en dehors des sauvegardes locales que les gens auraient pu rĂ©aliser sur leurs machines locales. Les systĂšmes de gestion de version locaux souffrent du mĂȘme problĂšme â dĂšs quâon a tout lâhistorique dâun projet sauvegardĂ© Ă un endroit unique, on prend le risque de tout perdre.
Les systÚmes de gestion de version distribués
Câest Ă ce moment que les systĂšmes de gestion de version distribuĂ©s entrent en jeu (DVCS en anglais pour Distributed Version Control Systems). Dans un DVCS (tel que Git, Mercurial ou Darcs), les clients nâextraient plus seulement la derniĂšre version dâun fichier, mais ils dupliquent complĂštement le dĂ©pĂŽt. Ainsi, si le serveur disparaĂźt et si les systĂšmes collaboraient via ce serveur, nâimporte quel dĂ©pĂŽt dâun des clients peut ĂȘtre copiĂ© sur le serveur pour le restaurer. Chaque extraction devient une sauvegarde complĂšte de toutes les donnĂ©es.
De plus, un grand nombre de ces systĂšmes gĂšre particuliĂšrement bien le fait dâavoir plusieurs dĂ©pĂŽts avec lesquels travailler, vous permettant de collaborer avec diffĂ©rents groupes de personnes de maniĂšres diffĂ©rentes simultanĂ©ment dans le mĂȘme projet. Cela permet la mise en place de diffĂ©rentes chaĂźnes de traitement qui ne sont pas rĂ©alisables avec les systĂšmes centralisĂ©s, tels que les modĂšles hiĂ©rarchiques.