Comment on page
TP : Git et les branches
À 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.
Reprenez le projet du TP précédent. Vous pouvez copier votre dossier de travail pour être en mesure de recommencer au besoin.
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 :styles.css
p .blue {
color: "blue"
}
Ajoutez ensuite la classe
blue
au paragraphe dans le fichier index.html
.index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<h1>This is a Heading</h1>
<p class="blue">This is a paragraph</p>
</body>
</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 à :
index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<h1>This is a Heading</h1>
<p>Git c'est merveilleux</p>
</body>
</html>
Commitez ce changement, puis modifiez le titre de la page : "TP Git". Cette fois, le fichier se présente comme suit :
index.html
<!DOCTYPE html>
<html>
<head>
<title>TP Git</title>
</head>
<body>
<h1>This is a Heading</h1>
<p>Git c'est merveilleux</p>
</body>
</html>
Commitez également ces changements. Sur cette branche, l'historique devrait ressembler à :
commit 43330ba53e6859da860cd9ecb932c5d39bdd84c5 (HEAD -> modification-textes)
Author: Corentin Desfarges <cᴏ[email protected]>
Date: Sun Sep 23 23:29:39 2018 +0200
Modification du titre de la page
commit ce5bbaa05924fc7371b93e31740a388fb9ff38ee
Author: Corentin Desfarges <cᴏ[email protected]>
Date: Sun Sep 23 23:29:17 2018 +0200
Modification du paragraphe
commit 8ce658a80f605415a3104614874d8497132a6ec5 (master)
Author: Corentin Desfarges <cᴏ[email protected]>
Date: Sun Sep 23 11:39:51 2018 +0200
Ajout du fichier index.html
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 :Updating 8ce658a..43330ba
Fast-forward
index.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
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 :Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.
Observez ce message d'erreur, ainsi que l'état du dépôt :
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: index.html
Untracked files:
(use "git add <file>..." to include in what will be committed)
styles.css
no changes added to commit (use "git add" and/or "git commit -a")
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 :
index.html
<!DOCTYPE html>
<html>
<head>
<title>TP Git</title>
</head>
<body>
<h1>This is a Heading</h1>
<<<<<<< HEAD
<p>Git c'est merveilleux</p>
=======
<p class="blue">This is a paragraph</p>
>>>>>>> ajout-styles
</body>
</html>
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 :* commit f8f53f4d023fed26acf6dae999beea433448f4da (HEAD -> master)
|\ Merge: 43330ba db77cf5
| | Author: Corentin Desfarges <cᴏ[email protected]>
| | Date: Sun Sep 23 23:47:46 2018 +0200
| |
| | Commit de fusion de la branche ajout-styles dans master
| |
| * commit db77cf58b91adcaf6e175615b3b8afb4506cda9e (ajout-styles)
| | Author: Corentin Desfarges <cᴏ[email protected]>
| | Date: Sun Sep 23 23:27:39 2018 +0200
| |
| | Ajout des styles
| |
* | commit 43330ba53e6859da860cd9ecb932c5d39bdd84c5 (modification-textes)
| | Author: Corentin Desfarges <cᴏ[email protected]>
| | Date: Sun Sep 23 23:29:39 2018 +0200
| |
| | Modification du titre de la page
| |
* | commit ce5bbaa05924fc7371b93e31740a388fb9ff38ee
|/ Author: Corentin Desfarges <cᴏ[email protected]>
| Date: Sun Sep 23 23:29:17 2018 +0200
|
| Modification du paragraphe
|
* commit 8ce658a80f605415a3104614874d8497132a6ec5
Author: Corentin Desfarges <cᴏ[email protected]>
Date: Sun Sep 23 11:39:51 2018 +0200
Ajout du fichier index.html
Vous savez désormais travailler avec les branches, et êtes en mesure de rapatrier les changements sur la branche principale !
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.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.
Dans votre rapport, ajoutez les réponses aux questions suivantes :
- 1.Après avoir effectué le premier merge, il était question de
Fast-forward
dans le log. Expliquez ce que cela signifie. - 2.Réexpliquez brièvement pourquoi il y a eu un conflit lors du second merge.
- 3.Après avoir supprimé les branches localement, pouvez-vous les récupérer ? Si oui, comment ? Si non, pourquoi ?
- 4.Que pensez-vous du graph de votre projet visible sur GitLab (sous Repository/Graph) ?
Last modified 3yr ago