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