Annuler la modification fautive et conserver le travail ultérieur

GitBeginner
Pratiquer maintenant

Introduction

Fieldnotes organise de petits ateliers et des promenades dans le jardin. Une mise à jour publiée a accidentellement suspendu les inscriptions à Clay & Coffee. Une mise à jour ultérieure valide a ajouté Sunset Walk. L'équipe souhaite rétablir les inscriptions tout en conservant ce nouvel événement et toutes les réservations existantes.

Vous utiliserez d'abord un atelier fonctionnel pour découvrir le déroulement normal d'une réservation et la remise du billet. Vous inspecterez ensuite le véritable historique Git, annulerez l'ancienne modification fautive avec un nouveau commit correctif, le publierez et testerez une véritable réservation. Revenir en arrière sur l'ensemble du site ferait perdre du travail utile.

Vous devez connaître les bases de la navigation dans le terminal, des commits, des branches et d'un log/diff simple ; le cours précédent sur la fusion en équipe est recommandé. Les onglets préparés Workspace et Event Desk sont les seuls points d'entrée nécessaires. Ce sont de véritables dépôts Git et une application HTTP sur une seule machine de formation. Dans ce scénario, le site lit directement la branche main partagée ; aucun pipeline de déploiement hébergé n'est enseigné. Toutes les identités et tous les événements sont fictifs. La durée de 45 minutes est une estimation de l'auteur.

Essayer le guichet et localiser la mise à jour fautive

Dans cette étape, effectuez une réservation normale, observez l'atelier défaillant et identifiez les entrées de l'historique qui représentent la panne et le travail ultérieur à conserver.

Ouvrez l'onglet Event Desk. Dans la liste des ateliers, trouvez Postcard Studio et cliquez sur son lien View workshop. Cet atelier fonctionnel affiche Save your seat, le champ Full name et Reserve a place. Saisissez Alex Morgan, ou un autre nom d'exemple, puis cliquez une fois sur Reserve a place.

La confirmation doit indiquer You're on the list. et afficher Postcard Studio, Studio Two et EUR 10.00. Cliquez sur Download ticket. Utilisez la liste des téléchargements de votre navigateur pour ouvrir le fichier .txt. Il doit contenir le même atelier, le même nom, le même point de rendez-vous et le même total. Sa référence de réservation est générée pour votre réservation réelle et varie. C'est le résultat normal et utile que l'atelier affecté doit lui aussi fournir.

Cliquez sur All workshops dans l'en-tête de la page. Ouvrez Clay & Coffee avec son lien View workshop. Le problème initial attendu est Registration is paused, sans formulaire de réservation. Les réservations existantes restent valides ; ne les supprimez pas pour réparer un paramètre d'inscription.

Utilisez de nouveau All workshops dans l'en-tête et ouvrez Sunset Walk. Cet événement doit rester disponible avec 15 Nov 2026, 16:00, East Gate et EUR 6.00. Cette page ultérieure est du travail valide à conserver ; elle ne fait pas partie de la panne.

Passez à l'onglet Workspace. Commencez dans le dépôt de travail :

cd /home/labex/project/event-desk/editor

cd change le répertoire de ce terminal. Si vous saisissez mal un chemin, utilisez pwd pour afficher le répertoire courant et ls pour en lister le contenu, puis répétez la commande cd complète ci-dessus. Les erreurs de navigation courantes ne nécessitent pas de réinitialiser la VM.

Définissez une identité d'auteur uniquement dans ce dépôt. --local conserve les paramètres localement ; les guillemets maintiennent ensemble un nom contenant des espaces. Ces valeurs d'exemple sont fictives et vous pouvez choisir les vôtres :

git config --local user.name "Event Editor"
git config --local user.email "events@example.com"

L'application conserve les réservations en dehors du dépôt de travail. Son fichier JSON utilise des noms de champs entre guillemets, suivis de deux-points et de valeurs ; les noms et les identifiants d'ateliers sont du texte, tandis que les prix sont stockés en centimes entiers. .. désigne le répertoire parent : la commande en lecture seule suivante affiche donc le fichier de réservations voisin sans quitter votre répertoire de travail :

cat ../bookings.json

Repérez les enregistrements d'origine de Casey Lane et Sam Rivera, ainsi que votre nouvelle réservation Postcard Studio. Gardez ces enregistrements inchangés. Git corrigera un paramètre d'événement versionné ; il ne ramènera pas la collection de réservations à un état antérieur.

Lisez l'historique des commits. --no-pager affiche directement la sortie au lieu d'ouvrir un visualiseur défilant ; --oneline donne une ligne courte par commit ; --decorate ajoute les étiquettes des pointeurs de branche et des tags :

git --no-pager log --oneline --decorate

L'entrée la plus récente est Add the Sunset Walk event, suivie de Pause Clay and Coffee registrations et de Open the Fieldnotes event desk. Les identifiants exacts des commits varient. Le tag préparé incident-start est un repère fixe pour la version dont vous avez hérité. Contrairement à main, il ne bougera pas lorsque vous créerez un nouveau commit. Gardez ce repère inchangé.

Lisez ce qu'a modifié le commit le plus récent désigné par ce repère. show affiche le message et le patch d'un commit sélectionné :

git --no-pager show incident-start

Il ajoute events/sunset-walk.json. C'est le nouvel événement à préserver. C'est l'ancienne suspension, et non cet ajout, qu'il faut annuler. Le point de contrôle confirme votre véritable nouvelle réservation de référence et son billet, plutôt que de considérer une réservation d'exemple existante comme votre nouveau résultat.

Ajouter une correction sans perdre le travail ultérieur

Dans cette étape, identifiez la différence fautive et inversez uniquement cette différence dans un nouveau commit après la pointe héritée.

Restez dans Workspace, dans /home/labex/project/event-desk/editor. Une expression de révision peut désigner un ancêtre sans l'extraire ni déplacer une branche. incident-start~1 signifie un parent avant le repère fixe ; incident-start~2 signifie deux parents avant lui. Lisez le commit intermédiaire :

git --no-pager show incident-start~1

Son patch fait passer registration_open de true à false dans events/clay-and-coffee.json. Ce paramètre booléen autorise ou suspend les nouvelles inscriptions. capacity est le nombre positif de places de l'atelier ; il doit lui aussi rester utilisable. La valeur inchangée de price_cents, 1800, signifie EUR 18.00.

Lisez l'instantané d'origine de l'événement. Un deux-points relie une révision et un chemin de fichier : l'expression suivante sélectionne donc le fichier deux parents avant le repère :

git --no-pager show incident-start~2:events/clay-and-coffee.json

À l'origine, les inscriptions sont ouvertes avec une capacité de 12 places. Restaurer le site entier à cette ancienne version supprimerait aussi Sunset Walk. Un revert calcule au contraire l'inverse de la modification d'un commit choisi et enregistre une nouvelle correction sur la branche courante. Le commit fautif d'origine reste dans l'historique, et les commits utiles ultérieurs y restent également.

Vérifiez l'état de travail avant la correction. --short donne une liste compacte des fichiers modifiés ; le dépôt préparé ne doit produire aucune sortie :

git status --short

Annulez maintenant le commit fautif identifié. --no-edit accepte le message correctif généré par Git et évite d'ouvrir un éditeur. Le repère fixe garde cette cible stable même après l'avancement de votre branche :

git revert --no-edit incident-start~1

Vous devez obtenir un nouveau commit commençant par Revert "Pause Clay and Coffee registrations" et la modification d'un seul fichier. Votre identité d'auteur et l'identifiant du commit peuvent différer.

Exercez-vous à reconnaître une opération déjà terminée en exécutant une nouvelle fois la même commande utilisant le repère fixe. Cette répétition doit renvoyer un code non nul avec nothing to commit, working tree clean. Exécutez-la seule, puis continuez :

git revert --no-edit incident-start~1

Dans ce cas préparé où la correction est déjà appliquée, aucun revert inachevé ne reste à résoudre. Inspectez l'historique et l'état au lieu d'inventer un commit correctif vide :

git --no-pager log --oneline --decorate
git status --short

Il doit y avoir exactement une nouvelle correction au-dessus des commits d'origine d'ajout de Sunset Walk, de suspension et d'ouverture, sans modification de travail. Le repère incident-start désigne toujours la version héritée. Cela évite aussi de confondre un HEAD mobile avec une référence d'incident fixe.

Examinez la correction exacte. diff compare les deux instantanés nommés. HEAD est le commit actuellement extrait ; -- sépare les révisions du chemin de fichier qui suit :

git --no-pager diff incident-start HEAD -- events/clay-and-coffee.json

Seule la modification inverse, de false à true, doit apparaître. Vérifiez que le nouvel événement ne présente aucune différence par rapport à la version héritée :

git --no-pager diff incident-start HEAD -- events/sunset-walk.json

Aucune sortie n'est attendue pour Sunset Walk. Vous avez une correction locale ciblée tout en conservant le travail ultérieur.

Passez à Event Desk, cliquez sur All workshops dans son en-tête et ouvrez de nouveau Clay & Coffee. Il indique toujours Registration is paused. C'est attendu : votre commit dans le dépôt de travail est local, tandis que ce site lit le dépôt partagé. L'étape suivante le publie. Le point de contrôle évalue ici le commit correctif local et les fichiers préservés.

Publier et tester les inscriptions réparées

Dans cette étape, livrez la correction à la branche main partagée, créez une véritable réservation dans l'atelier rétabli et vérifiez que le nouvel événement et les réservations existantes restent intacts.

Passez à Workspace, toujours dans /home/labex/project/event-desk/editor. origin est le nom distant préparé pour /home/labex/project/event-desk/shared.git, un dépôt nu local qui conserve l'historique partagé sans copie de travail modifiable. push origin main envoie votre branche main locale vers cette destination :

git push origin main

Vous devez obtenir main -> main sans refus. Votre nouveau commit suit la pointe héritée : cet envoi normal préserve donc chaque commit publié. Le scénario n'a aucun contributeur actif en arrière-plan. Si vos expérimentations produisent un refus, inspectez les véritables historiques ; un remplacement forcé qui perd du travail d'origine ne satisfait pas la tâche.

Examinez les pointeurs après la livraison :

git --no-pager log --oneline --decorate

Les branches main locale et origin/main désignent maintenant le nouveau commit correctif. Le repère d'incident d'origine et tous les messages antérieurs restent en dessous.

Passez à Event Desk. Cliquez sur All workshops dans l'en-tête de la page, puis ouvrez Clay & Coffee. Il affiche désormais Save your seat, Full name et Reserve a place. Vérifiez la date, le point de rendez-vous et le prix inchangé de EUR 18.00 avant de saisir un nom.

L'atelier rétabli dispose de son véritable formulaire de réservation.

Repérez le titre de l'atelier et le formulaire à droite ; sur un écran étroit, le formulaire se trouve sous les détails de l'événement. Les places restantes reflètent les réservations réelles : leur nombre peut donc différer de l'exemple.

Saisissez Jamie Chen, ou un autre nom complet d'exemple, puis cliquez une fois sur Reserve a place. La confirmation doit indiquer You're on the list. avec Clay & Coffee, 14 Nov 2026, 14:00, The Pottery Room, une place et EUR 18.00.

Une véritable confirmation de réservation fournit le billet téléchargeable.

Cliquez sur Download ticket, ouvrez le fichier .txt obtenu depuis la liste des téléchargements de votre navigateur et comparez sa référence de réservation, l'atelier, la date, l'heure, le point de rendez-vous, le nom, le nombre de places et le total à la confirmation. La référence est générée pour votre réservation ; ce n'est pas une valeur à recopier depuis une capture d'écran.

Utilisez All workshops dans l'en-tête pour rouvrir Sunset Walk. Sa page complète doit toujours afficher 15 Nov 2026, 16:00, East Gate et EUR 6.00. Postcard Studio doit lui aussi rester utilisable, selon sa capacité restante réelle.

Passez à Workspace et relisez la collection de réservations :

cat ../bookings.json

Les deux enregistrements d'origine et votre réservation Postcard Studio précédente sont toujours présents ; la nouvelle réservation Clay & Coffee a été ajoutée. Vous avez corrigé l'événement versionné sans ramener les données de réservation à un état antérieur.

Terminez par la vérification de l'état de travail :

git status --short

Aucune modification suivie ne doit rester. Les notes personnelles non suivies sont autorisées si vous en avez créé ; n'incluez pas de fichiers suivis supplémentaires dans le site. Le point de contrôle vérifie l'historique réel, la publication partagée, les pages complètes en fonctionnement, les enregistrements préservés et le contenu réel du billet.

Résumé

Vous avez utilisé une réservation normale pour établir le résultat métier attendu, retracé une panne d'inscription jusqu'à un ancien commit et ajouté une correction ciblée avec git revert. Le nouvel événement, l'historique d'origine et les réservations existantes sont restés intacts.

Après un envoi normal, le site partagé a accepté une nouvelle réservation et fourni un véritable billet avec le bon événement et le bon prix. Le challenge indépendant change le paramètre fautif et comprend deux bons commits ultérieurs : inspectez donc l'historique hérité avant de choisir la cible de la correction.