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
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
Was this helpful?