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.
git clone https://gitlab.com/corentin.desfarges/tp-rebase-2020.gitcd tp-rebase-2020git checkout ajout-stylesgit checkout improve-docgit checkout modification-textesgit checkout master
Les commandes précédentes seront étudiées prochainement
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.
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 :
First, rewinding head to replay your work on top of it...Applying: feat(index): modify paragraph contentApplying: feat(index): rename page title
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
.
Placez-vous sur la derniĂšre branche Ă merger : ajout-styles
, et rebasez-lĂ sur la branche master
. Constatez puis expliquez le résultat suivant :
First, rewinding head to replay your work on top of it...Applying: feat(index): add some colorsUsing index info to reconstruct a base tree...M index.htmlFalling back to patching base and 3-way merge...Auto-merging index.htmlCONFLICT (content): Merge conflict in index.htmlerror: Failed to merge in the changes.Patch failed at 0001 feat(index): add some colorsThe copy of the patch that failed is found in: .git/rebase-apply/patch
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
.
Vérifiez les points suivant :
Le fichier index.html correspond bien Ă :
<!DOCTYPE html><html><head><title>TP Git - Rebase</title><link href="styles.css" rel="stylesheet" type="text/css"></head><body><h1>This is a Heading</h1><p class="blue text">Git c'est merveilleux</p></body></html>
La commande git log --graph --oneline
donne le résultat (les hashs seront différents) :
* cd32090 (HEAD -> master, ajout-styles) feat(index): add text class to uniformize text displaying* 3dbbe33 feat(index): add some colors* c371aad (modification-textes) feat(index): rename page title* 73f0549 feat(index): modify paragraph content* cba676c (origin/improve-doc, improve-doc) docs(): add working instructions* c36d817 (origin/master, origin/HEAD) docs(readme): add readme file* aad15dc feat(index): add initial page
Clonez Ă nouveau le projet, dans un nouveau dossier
cd ..git clone https://gitlab.com/corentin.desfarges/tp-rebase-2020.git tp-rebase-interactifcd tp-rebase-interactifgit checkout ajout-stylesgit checkout improve-docgit checkout modification-textesgit checkout master
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
.
La commande git log --graph --oneline
donne le résultat suivant :
* b3166ef (HEAD -> master, ajout-styles) feat(index): add some styles* 211cd8a (modification-textes) feat(index): modify paragraph content* 434ee5c feat(index): rename page title* cba676c (origin/improve-doc, improve-doc) docs(): add working instructions* c36d817 (origin/master, origin/HEAD) docs(readme): add readme file* aad15dc feat(index): add initial page
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 ?