Champ Valeur
Auteur·e Cédric Prin et Milan Magal
Édition 2025-09-12
Durée 1 session
Taille des équipes 1 personne
Rendu via git, dépôts bifurqués avec le même nom, droits en lecture à delivery_collector

Barème

Critère Points
Fast-forward 2
Merge sans conflit 4
Merge avec conflit 5
Rebase sans conflit 4
Rebase avec conflit 5
Total des critères 20

Règlement

La réalisation de cet exercice est assujettie aux règles en vigueur dans l’école en matière de triche. Tricher vous expose à de graves sanctions.

Synopsis

Aujourd’hui, vous allez découvrir des mécanismes fondamentaux de Git : les branches, les fusions (merge) et les réorganisations (rebase). Ces outils sont essentiels pour collaborer efficacement sur des projets de développement.

Vous avez à disposition la vidéo de cours Git - branches et fusions qui explique les notions à connaître pour réaliser ce sujet. Prenez le temps de la visionner avant de commencer, elle vous guidera dans la compréhension des différents types de fusions que vous allez rencontrer.

Vidéos de cours accessibles sur le réseau local de l’école.

Théorie

Fast-forward

Un fast-forward est une mise à jour simple d’une branche. Si la branche principale (ex. main) n’a pas changé depuis que vous avez créé votre branche de travail (ex. feature), Git peut simplement avancer le pointeur de main pour inclure tous les nouveaux commits de feature. → Aucun commit de fusion n’est créé, l’historique reste linéaire.

Merge (fusion)

fusion.png

Le merge sert à fusionner deux branches. Si les deux branches ont évolué séparément, Git crée un commit de merge pour les réunir. Cela permet de garder l’historique complet de chaque branche.

  • Avantage : préserve les chemins de développement.
  • Inconvénient : peut rendre l’historique plus complexe à lire.

Rebase (réorganisation)

Le rebase permet de rejouer les commits d’une branche sur une autre, comme si vous aviez commencé à travailler plus tard. Cela crée un historique linéaire, sans commit de merge, mais modifie les identifiants des commits.

  • Avantage : historique plus propre, plus facile à lire.
  • Inconvénient : à éviter sur des branches partagées, car cela réécrit l’historique.

Dépôts

Comment fork un dépôt

Un fork, c’est simplement une copie d’un dépôt. Cela permet de travailler sur le projet sans affecter l’original tout en gardant un lien avec celui-ci.

Pour commencer, vous devez suivre les consignes pour chacun des dépôts :

  1. Parmi la liste des dépôt, choisissez-en un, ouvrez sa page dans votre navigateur.
  2. Cliquez sur le bouton “Bifurcation” (ou “Fork”) en haut à droite.
  3. Gardez le même nom de dépôt, cliquez uniquement sur le bouton “Bifurquer le dépôt” (ou “Fork repository”).
  4. Une fois le fork créé, n’oubliez pas d’ajouter delivery-collector (Citrouille) à vos collaborateurs dans les paramètres.

Consignes

Chaque dépôt contient un fichier readme.md qui décrit la situation du dépôt et la fusion attendue :

  • Fast-forward
  • Merge sans conflit
  • Merge avec conflit
  • Rebase sans conflit
  • Rebase avec conflit

Pour chaque dépôt, vous devez :

  • fork le dépôt puis le cloner ;
  • effectuer la fusion demandée par le readme.md ;
  • créer un fichier intitulé commands.txt contenant toutes les commandes effectuées.

Après la fusion, le code de la branche main doit être fonctionnel et exécutable.

Méthode de travail

Prenez des notes sur les commandes Git que vous utilisez et sur les situations rencontrées (conflits, résolutions, etc.). Ces notes vous aideront à mieux comprendre les mécanismes de Git et à progresser dans vos futurs projets.