Gestion de version avec Git

Présentation

La session Git proposera une formation de base aux principes fondamentaux de l'outil et aux principales manipulations. L'accent sera mis sur les moyens pour faciliter la maintenance à long terme. En particulier la gestion des branches.

Première partie : Introduction à Git

Introduction à Git

L'objectif de cette session est d'introduire les concepts liés à la gestion de version avec Git. Un accent particulier sera mis sur les apports fondamentaux de Git pour la gestion de version; Quelques aspects historiques, en particulier SVN, pourront être abordé.

Contenu de la session :

1. Using Git (slides version écran) Télécharger
1. Using Git (pour impression) Télécharger
2. Configuring Git (slides version écran) Télécharger
2. Configuring Git (pour impression) Télécharger
3. Software forges for Git (slides version écran) Télécharger
3. Software forges for Git (pour impression) Télécharger

TP1 - Utilisation de Git

L'objectif de ce TP est de faire ses premiers pas avec git. On commencera par configurer l'environnement, puis nous illustrerons par l'exemple les commandes de base permettant de travailler sur un dépôt git. Au début du TP, nous travaillerons sur les commandes de gestion de version (en environnement mono-utilisateur), avant d'expérimenter les commandes permettant de travailler dans un environnement multi-utilisateur, sur un dépôt partagé avec Gitlab.

TP1. Utilisation de Git – Introduction à l'outil Télécharger

Deuxième partie : Comprendre le modèle de données de Git

Comprendre le modèle de données de Git

À première vue, l'utilisation de Git peut sembler relativement compliquée, et l'on peut vite se retrouver perdu dans les nombreuses commandes de l'interface. En fait, Git s'appuie sur un modèle de données extrêmement simple. C'est en partie la simplicité de ce modèle qui fait toute la puissance de l'outil. Comprendre ce modèle de données, c'est comprendre la grande majorité des commandes de l'interface Git, et être capable de se retrouver facilement et efficacement dans la gestion parfois compliquée des dépôts.

Nous découvrirons notamment comment sont stockés les fichiers, ce qu'il y a derrière la notion de commit, de branche, de tag, et comment agissent la plupart des commandes de base.

4. Understanding Git (slides version écran) Télécharger
4. Understanding Git (pour impression) Télécharger

TP2 - Le modèle de données

L'objectif de ce TP est de comprendre quel est le modèle de données sous-jacent à git. Cela se fera en explorant les différents fichiers dans lesquels git stocke l'historique. Le but est de démystifier complètement ce modèle, afin de s'en bâtir une représentation mentale permettant de le comprendre, et ainsi de travailler efficacement avec git.

TP2. Git - Comprendre le modèle de données Télécharger
Lecteur de ZLIB en Python 3 (pour le TP) Télécharger

Troisième partie : L'historique

Un historique clair

Nous verrons dans cette section pourquoi la clarté de l'historique est un préalable à la production de logiciel de qualité, et comment cela se traduit dans Git. Nous expliquerons notamment pourquoi il est important d'avoir des commits de qualité et ce que cela signifie. Nous verrons également comment, à partir de commits bien produits, remonter dans l'historique pour identifier plus efficacement une erreur.

Ce cours s'appuiera sur les slides 1 à 22 du cours git-history.

5. How to Clean (and Rewrite) History (slides version écran) Télécharger
5. How to Clean (and Rewrite) History (pour impression) Télécharger

TP3 - Historique, 1ère partie

Nous illustrerons les principes de la recherche d'erreur dans l'historique sur un petit exemple. Le premier objectif est ici d'introduire la notion de recherche par bisection.

TP3. Git - Gestion de l'historique Télécharger

Réécrire l'histoire

L'objectif est ici de montrer comment on peut nettoyer l'historique d'un dépôt. Après en avoir démontré l'intérêt pratique, nous introduirons l'utilisation de la commande à git rebase.

Ce cours s'appuiera sur les slides 23 à 32 du cours git-history.

TP3 - Historique, 2ème partie

L'objectif de cette deuxième partie du TP est d'illustrer l'utilisation de la commande git rebase sur un exemple de réécriture de l'historique d'un dépôt.

Quatrième partie : Les processus de développement

Les différents workflows de Git

Après être revenus rapidement sur l'utilisation pratique des branches dans Git, nous expliquerons les bonnes pratiques liées à l'utilisation des branches. Les branches permettent de séparer les contributions. L'accent sera mis sur les contributions thématiques.

Ensuite, nous montrerons plusieurs modèles de développement typiques (centralisé, triangulaire…) et illustrerons ces modèles de développement sur des exemples concrets.

6. Git Workflows (slides version écran) Télécharger
6. Git Workflows (pour impression) Télécharger

TP4 - branches et flows

Le but premier de ce TP est de se familiariser avec les branches dans git. Nous allons donc créer des branches, sauter d'une branche à l'autre et faire de nombreuses fusions (merge). L'autre point du TP sera de vous amener à manipuler plusieurs entrepôts distants simultanément. Un serveur «public» diffusera la branche «master» tandis qu'un serveur de «développement» stockera l'ensemble des autres branches.

TP4. Git - Gestion des branches et des sources Télécharger

Cinquième partie : Les outils

Les outils de base

gitk et git gui sont des outils graphiques complets et livrés en standard avec git. Ils permettent de réaliser de manière simple les opérations plus courantes, y compris certaines de manière plus fine et aisée qu'avec l'interface textuelle.

En outre, les IDE proposent une interface de manipulation de Git intégrée avec l'édition du code. Ces interfaces ont parfois quelques limitations mais permettent une gestion rapide des cas simples.

Nous donnerons une liste d'un ensemble d'outils disponibles pour interagir avec Git, et nous montrerons également comment utiliser directement un IDE (VSCode) pour gérer un historique Git.

Les forges web : Gitlab

Les forges web comme Github et Gitlab vont au-delà des aspects purement coopératifs: - gestion des issues liés au code - gestion des branches - gestion des membres: groupes, roles - contributions externes par /pull request/ - revue de code - tests automatiques de code (gitlab-CI) - pages: site web et documentation incluent dans le projet - édition en ligne

Contrairement aux forges précédentes, elles sont aussi centrées sur les développeurs et non sur les projets.

Nous ferons une revue très rapide des fonctionnalités disponibles avec des forges web comme Gitlab.

7. Git Tools (slides version écran) Télécharger
7. Git Tools (pour impression) Télécharger