TP2 - Manipuler les branches

L'objectif de ce TP est de continuer à prendre en main Git et manipuler le concept de branches et de conflits.

Partie 0 - Instructions

Sources à utiliser

Si vous ne trouvez pas, vous pouvez demander :

  1. À votre voisine ou voisin.
  2. À votre prof.
  3. À un moteur de recherche (DuckDuckGo par exemple).
  4. À StackOverflow.

Mais vous ne pouvez PAS utiliser un LLM (ChatGPT, DeepSeek, Gemini, Grok, etc). Sous aucun prétexte. Levez la main plutôt, et on viendra le plus vite possible.

Si on vous interdit d'utiliser ces outils dans ce cours, ce n'est pas parce qu'ils détruisent la planète, concentrent les pouvoirs dans les mains des Big Tech, mettent en danger les démocraties, etc.

C'est parce que ces outils vous empêchent d'apprendre correctement tout en vous donnant l'impression (rarement juste) de gagner du temps.

Si on voit un·e élève utiliser un LLM pendant un de nos TP, c'est -1 sur sa note finale. Non négociable. Mais cumulable.

Comment réaliser le TP

Partie 1 - Multitasking et micromanagement

Vous travaillez dans une entreprise toxique et votre manager vous donne plusieurs tâches en même temps et change la priorité de ces tâches sans vous consulter. Vous devez donc avoir toujours une version propre du produit sur une branche main, mais travailler sur différentes tâches sur des branches de travail.

Il s'agit ici d'un TP d'1h30 donc on a exagéré sur ce qu'il est possible de demander en terme de changement de tâches et de priorité, mais dans la vraie vie, à l'échelle de plusieurs jours/semaines, il est fréquent de devoir mettre une tâche en pause pour travailler sur une autre.

Début du projet

Avant de commencer, puisque la configuration par défaut de git sur les ordis de l'IUT est un peu datée, on va commencer par lancer la commande suivante :

git config --global init.defaultBranch main

Elle change le nom de la branche par défaut pour les nouveau dépôt pour l'appeler main. Jusqu'à y il a quelques années, par défaut c'était master, maintenant on utilise plutôt main.

Vous travaillez sur un projet de site web pour un café. Plutôt que de discuter avec les gestionnaires du café pour définir les besoins clients en amont et planifier le projet, votre manager décide de vous lancer sur une V1 composée d'une simple page de présentation.

📞🔊📞🔊 Le café vient d'appeler, il faudrait rajouter une page « À propos » qui parle de l'esprit du café, sa création etc.

Ça reste assez flou, on ne va pas créer cette page sur la version propre du projet, mais le faire pour l'instant dans une branche.

📞🔊📞🔊 Votre manager arrive en courant, les couleurs sont moches, il faut vite changer ça ! Le titre devrait être en #fc2a9e

Réponse

Certainement pas sur la branche contenu, on veut pouvoir montrer une version propre avec les nouvelles couleurs. On pourrait (et devrait) le faire sur une branche à part, mais c'est sur une modification rapide, on est en rush, on va le faire sur main.

On a maintenant une version principale avec le bon CSS. On veut retourner travailler sur le contenu, mais il faut d'abord récupérer les modifications effectuées sur main dans la branche contenu.

Réponse

On se déplace sur la branche contenu, puis on fusionner (merge) la branche main dedans :

git switch contenu
git merge main
Akaru café est un café qui sert des cafés, du thés et des chocolats chauds.
Nous portons une attention particulière à la provenance de nos produits, en essayant de nous fournir directement auprès des producteur·ices et en faisant le moins possible appel à de l'esclavagisme.

Ce site est très moche. La personne qui a rédigé ce sujet n'aime pas faire de web, donc le site restera moche, mais on va quand même faire semblant de le rendre un peu moins moche.

📞🔊📞🔊 Il y a une typo sur la page À Propos ! Il faut remplacer « du thés » par « des thés » !

git stash prend l'ensemble des modifications courantes du Working Directory et les dépose dans une pile, appelée stash. Pour re-appliquer ces modifications on les sort de la stash avec git stash pop.

📞🔊📞🔊 Le café vient d'appeler, il faut rajouter en urgence une nouvelle page, « Nos produits », pour présenter le menu.

<ul>
	<li class="cat_produit">CATÉGORIE PRODUIT 1
		<ul>
			<li class="produit">Produit1</li>
			<li class="produit">Produit2</li>
		</ul>
	</li>
	<li class="cat_prduit">CATÉGORIE PRODUIT 2
		<ul>
			<li class="produit">Produit2</li>
		</ul>
	</li>
</ul>
Cafés :
Espresso: 2,50€
Double Espresso: 3,50€
Filtre: 3,50€
Latte: 4,50€
Capuccino: 4,50€

Boissons chaudes:
Chai: 4,50€
Thé: 4,50€
Chocolat chaud: 4,50€
.cat_produit {
	font-weight: bold;
	padding: .5em;
}

.produit {
	color: #191970;
}

📞🔊📞🔊 VITE ! Le café a encore appelé, le manager vous met la pression !

Le header est moche comme ça, il faut vite le changer pour que le titre soit en #dc143c et le fond en #008b8b.

Partie 2 - Adora, Bow et Catra ont toujours du mal avec git

Nos trois camarades satisfait·es de l'aide que vous leur avait fourni la semaine dernière, font encore appel à vous : Leur nouveau projet est un état incompréhensible, il y a des conflits de partout !

Partie 3 - Bonus