TP : Rebase
Mise en place et instructions
Pour ce TP, vous aurez besoin de Git et Git Bash (ou d'un terminal Unix).
À la fin de la séance du 15/10/2020, merci de déposer un fichier .zip/.rar (ou équivalent) à cette adresse, au format NOM_prenom_TP03.zip, contenant : - L'intégralité de votre dossier de travail (le dossier masqué .git doit être présent) - Un fichier (txt, pdf, docx, ...) contenant les commandes jouées lors de ce TP
Vous êtes libre d'ajouter à votre rapport les difficultés rencontrées.
Pour le nommage de vos commits, il conviendra d'appliquer la méthode de nommage de commit vue lors de la séance précédente.
Gérer les branches efficacement
Les commandes précédentes seront étudiées prochainement
Récupérer le projet pour travailler en local
Aperçu du dépôt Git
Let's merge into master...
Pour commencer tout doucement, on décide de merger la branche improve-doc
dans master
. Sachant que la branche master
n'a pas changé depuis la création de improve-doc
, choisissez la commande la plus simple à vos yeux. Expliquez votre choix.
Jusque là tout va bien
Il est fort probable que tout se soit bien passé jusqu'ici ! Sinon, je vous invite à demander de l'aide.
On décide ensuite de merger la branche modification-textes
sur master
. On pourrait utiliser la commande merge
, mais on souhaite conserver l'historique le plus linéaire possible. Il s'agit donc de rebaser notre branche sur master
.
Donnez la ou les différentes commandes que vous utilisez. Le résultat devrait être sensiblement similaire à celui-ci :
En cas de problème, contactez-moi (moi === le mec qui vous parle depuis 2h) immédiatement. Vous pourriez être bloqués pour la suite du TP.
Utilisez la commande adéquate pour vérifier la linéarité de votre branche master
. Vous pouvez constaté que le commit parent de votre branche est désormais celui intitulé "docs(): add working instructions".
Vous pouvez désormais rapatrier les modifications de la branche courante dans master
.
Un poil plus technique
Placez-vous sur la dernière branche à merger : ajout-styles
, et rebasez-là sur la branche master
. Constatez puis expliquez le résultat suivant :
Résolvez le problème, en respectant le contenu d'origine du commit en cours d'application :
Conservez le nouveau titre de la page
Conservez le nouveau texte du paragraphe
Veillez à ce que le texte puisse s'afficher en bleu
Le fichier css doit bien être inclu dans la page html
Validez puis passez à la suite. Lorsqu'un autre conflit survit, veillez à :
Conservez le nouveau texte du paragraphe
Veillez à ce que le texte puisse s'afficher en bleu et que la classe text soit bien appliquée
Validez et passez à la suite. Un nouveau conflit se produit, lors de l'application du commit "feat(index): rename page title". Cette fois, on constate que le conflit se produit sur le titre de la page html. Or, celui-ci a déjà été modifié sur une autre branche, et ce commit n'a plus de raison d'être. Ne l'appliquez pas et terminer le rebase.
Enfin, mergez la branche ajout-styles
dans master
.
On check que tout est bon !
Vérifiez les points suivant :
Le fichier index.html correspond bien à :
La commande
git log --graph --oneline
donne le résultat (les hashs seront différents) :
Rebase interactif
Clonez à nouveau le projet, dans un nouveau dossier
Mergez la branche improve-doc
dans master
.
Placez-vous sur la branche modification-textes
, puis utilisez le mode interactif pour rebaser cette branche sur master
. Inversez l'ordre des commits (indiquez précisément ce que vous avez fait pour Enfin, mergez dans master
.
Utilisez le rebase interactif pour rebaser ajout-styles
sur master
. L'objectif sera de ne pas appliquer le commit "feat(index): rename page title" provenant de cette branche, et de fusionner les deux commits "feat(index): add some colors" et "feat(index): add text class to uniformize text displaying".
Enfin, mergez le tout dans master
.
On valide !
La commande git log --graph --oneline
donne le résultat suivant :
Questions
Dans votre rapport, ajoutez les réponses aux questions suivantes :
Donnez les principaux cas d'utilisation du mode interactif ?
rebase -i
Dans quel cas ne devriez-vous pas utiliser la commande rebase ?
Que pensez-vous de l'utilisation du mode interactif de rebase ?
Last updated