TP : Git et les branches
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 01/10/2020, merci de déposer un fichier .zip/.rar (ou équivalent) à cette adresse, au format NOM_prenom_TP02.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.
Enrichir le projet de nouvelles fonctionnalités
Reprenez le projet du TP précédent. Vous pouvez copier votre dossier de travail pour être en mesure de recommencer au besoin.
Créer des "feature-branches"
On souhaite effectuer deux évolutions sur notre projet. On va pour cela créer deux branches :
ajout-styles
modification-textes
Créez la première branche, et sur celle-ci, ajoutez le fichier styles.css
, contenant le code suivant :
Ajoutez ensuite la classe blue
au paragraphe dans le fichier index.html
.
Commitez ces changements en indiquant un message approprié.
En parallèle, on souhaite changer le texte de notre fichier. Placez-vous alors sur la branche master
.
Si vous consultez l'historique des commits depuis la branche master
, vous ne devez pas voir le dernier commit concernant l'ajout des styles, puisque celui-ci appartient à une branche différente. Vérifiez que vous êtes bien dans cette situation.
Créez la seconde branche, et sur celle-ci, remplacer le texte du paragraphe par le message suivante : "Git c'est merveilleux". Le fichier index.html doit alors ressembler à :
Commitez ce changement, puis modifiez le titre de la page : "TP Git". Cette fois, le fichier se présente comme suit :
Commitez également ces changements. Sur cette branche, l'historique devrait ressembler à :
Rapatrier le travail sur la branche master
Une fois le travail sur chaque branche terminée, on souhaite naturellement le voir rapatrié sur la branche principale, à savoir la branche master
.
Placez-vous sur la branche master
. L'historique des commits ne présente qu'un seul résultat à ce moment de l'exercice. Nous allons tout d'abord rapatrier les changements de la branche modifications-textes
.
Utiliser la commande appropriée pour fusionner cette branche dans la branche master
. Le résultat de cette commande est le suivant :
Si je consulte l'historique de la branche master, je constate désormais que des commits ont bien été ajoutés à la branche principale. Si j'ouvre le fichier index.html
, les textes sont bien à jour.
Tentez ensuite de rapatrier le commit de la branche ajout-styles
. Le message apparaît alors :
Observez ce message d'erreur, ainsi que l'état du dépôt :
Un conflit s'est produit lors de la fusion des branches. Ouvrez le fichier index.html
afin de pouvoir observer les parties du code que Git n'a pas réussi à fusionner.
Le conflit se présente comme suit :
HEAD
correspond à l'état du dépôt lors du dernier commit valide de la branche. On retrouve donc le texte original, puisque la branche modifications-texte a déjà été mergée dans master
.
La partie sous les symboles ======= correspond à l'état de la branche que l'on tente de fusionner.
Résolvez le conflit de manière intelligente : on souhaite conserver le nouveau texte, mais également la classe ajoutée. En utilisant la commande git log --graph
, vous devriez observer un résultat très similaire à celui-ci :
Vous savez désormais travailler avec les branches, et êtes en mesure de rapatrier les changements sur la branche principale !
Partagez vos branches
Essayez désormais de publier votre projet (les trois branches) sur GitLab. Pensez à me donner l'accès Maintainer
(@corentin.desfarges) et à ajouter l'URL de votre dépôt dans votre rapport.
Nettoyer votre dépôt local
Les branches de travail ayant été mergées sur master
, elles ne devraient plus vous êtes utiles. Supprimez-les. La commande git branch
ne devrait alors plus vous affichez que la branche master
.
Veillez à conserver les branches de travail sur GitLab.
Questions
Dans votre rapport, ajoutez les réponses aux questions suivantes :
Après avoir effectué le premier merge, il était question de
Fast-forward
dans le log. Expliquez ce que cela signifie.Réexpliquez brièvement pourquoi il y a eu un conflit lors du second merge.
Après avoir supprimé les branches localement, pouvez-vous les récupérer ? Si oui, comment ? Si non, pourquoi ?
Que pensez-vous du graph de votre projet visible sur GitLab (sous Repository/Graph) ?
Last updated