Passer au contenu
GitTree

Leçon 30 · Récupération

GitTree Instantanés d'annulation, de rétablissement et de récupération

Annulez une validation dans la barre d'outils de GitTree, refaites-la et découvrez ce que l'application peut et ne peut pas récupérer, quand elle refuse et pourquoi elle conserve les instantanés de récupération.

Progression enregistrée dans ce navigateur.

La lecture charge la vidéo depuis YouTube (mode de confidentialité amélioré).

Narration en anglais · English and Arabic légendes

Ouvrez la page vidéoRegarder sur YouTube

Ce que vous apprendrez

  • Lisez ce que ferait la prochaine opération Annuler ou Rétablir avant d'appuyer dessus.
  • Prévoyez que l'annulation d'un commit maintient ses modifications à un stade ultérieur et que Redo peut ramener le commit.
  • Reconnaissez pourquoi l'application refuse une annulation ou un rétablissement : la branche a été déplacée, les fichiers ont été modifiés, une télécommande a été modifiée.
  • Sachez ce que sont les instantanés de récupération et comment supprimer délibérément les anciens.

Avant de commencer

Vous êtes sur private/undo-demo, une branche du résultat M de la leçon 18 avec un arbre de travail propre. Vous allez créer une petite note, docs/signup-recovery.md, et la valider through GitTree, car l'annulation de GitTree fonctionne à partir des étapes qu'elle enregistre elle-même. Un commit effectué dans un terminal est une chose différente et n'entre pas dans cet enregistrement.

Tout est local et sur le forfait gratuit (GitTree vous demande de vous connecter) : pas de compte d'hébergement, pas de fournisseur, pas d'Internet. Chaque identité est fictive (exemple.com). N'exécutez jamais cette leçon dans un projet réel.

Apportez les modifications dans GitTree ou avec les commandes Git natives, pas les deux dans la même copie. La lecture du résultat est toujours sûre. Les étiquettes de menu, les info-bulles et les notifications proviennent des propres chaînes et sources de GitTree 2.0. Les commandes natives ont été exécutées avec Git 2.43 dans des copies jetables et affichent uniquement le modèle Git, pas l'enregistrement de l'application. Les étapes GitTree n'ont pas été exécutées le macOS, Windows ou Linux.

Effets de concept et d'état

GitTree conserve journal des étapes qu'il effectue. Annuler annule l'étape la plus récente et Rétablir répète la dernière étape annulée. L'info-bulle de la barre d'outils nomme l'étape, par exemple « Annuler : valider … ». Lisez-le d’abord : s’il nomme autre chose que ce à quoi vous vous attendez, arrêtez.

Avant une étape destructrice, GitTree enregistre un recovery snapshot sous refs/ogt/trash/* et écrit l'entrée de journal. Annulez les restaurations à partir de cet enregistrement, et seulement tant que rien n'a changé depuis : une branche n'est reculée que si elle pointe toujours là où l'étape l'a laissée, et les fichiers ne sont restaurés que si personne ne les a modifiés par la suite. Sinon, l'annulation est refusée avec un motif et l'instantané est conservé.

Annuler un commit recule la branche et maintient les modifications validées par étapes, donc rien n'est perdu. Refaire ce commit fait avancer à nouveau la branche vers le même commit. Toutes les étapes ne peuvent pas être refaites, et certaines ne peuvent pas être annulées : une poussée forcée a modifié une télécommande (« appuyez à nouveau pour la remettre en place ») ; une réserve supprimée est conservée sous forme d'instantané mais n'est pas encore annulée ; le tout premier commit n’a pas d’état antérieur. Une étape qui s’est arrêtée à mi-chemin n’a pas de résultat complet à annuler.

Les instantanés ne sont pas supprimés selon un calendrier. La commande Delete Old Recovery Snapshots… vous permet de choisir un âge, affiche exactement quels instantanés sont les plus anciens et supprime uniquement ceux après confirmation. La suppression d'un instantané supprime le retour en arrière pour cette étape.

Annuler et Rétablir modifient uniquement le référentiel local. Rien n'est publié.

Préparer l’état exact du projet

Commencez par une copie ordinaire séparée du résultat M de la leçon 18 en laquelle vous avez confiance et laissez votre original intact. Créez la branche et faites la note. DOC_LOST est le contenu de la note.

Entrées de fichiers complètes

Enregistrez uniquement à la phase nommée ci-dessous. Ce sont des corps UTF-8/LF complets avec une nouvelle ligne finale ; ne collez jamais les clôtures Markdown. Les fichiers exécutables inchangés héritent de l'entrée nommée. Les versions dans des variantes distinctes ne doivent pas écraser l'original.

docs/signup-recovery.md — DOC_LOST

Sortie
# Recovered signup work

Keep a branch name before leaving useful experimental work.

Dans GitTree

Ouvrez la palette avec Commande+Maj+P (Ctrl+Maj+P sur Ubuntu). Undo et Redo sont dans la barre d'outils et dans la palette ; les raccourcis sont Commande+Z pour Annuler et Commande+Maj+Z ou Commande+Y pour Rétablir (Ctrl sur Windows et Linux).

  1. Dans une copie séparée, créez la branche private/undo-demo et enregistrez DOC_LOST sous docs/signup-recovery.md. Ouvrez la liste des modifications : le fichier est nouveau.
  2. Préparez uniquement ce fichier et validez-le avec le résumé docs: demonstrate a reversible local commit. Attendez le vrai résultat.
  3. Passez la souris sur Undo dans la barre d'outils. L'info-bulle indique « Annuler : valider … ». S'il indique une autre étape, arrêtez-vous : n'annulez pas quelque chose que vous ne vouliez pas faire.
  4. Choisissez Undo une fois. L'avis indique "Annulé : validation". La branche est de retour sur M et la note est staged, non supprimée.
  5. Passez la souris sur Redo. L'info-bulle indique « Rétablir : valider … ». Choisissez Redo une fois. L'avis indique "Redid : commit". Le commit est de retour et l'arborescence de travail est propre.
  6. Separate stale-state copy. Dans une deuxième copie, répétez les étapes 1 à 4, puis, en dehors de GitTree, validez la note intermédiaire avec git commit -m "docs: external move after app undo". Regardez Redo : il est désactivé et sa raison est "La branche a bougé depuis ; l'annulation écraserait cette modification." Ne le forcez pas.
  7. Ouvrez la palette et exécutez Delete Old Recovery Snapshots…. Laissez Older than (days) à 30 et choisissez Find. Lisez ce que dit la liste : soit "Aucun instantané n'est aussi ancien". ou une liste des anciens. Fermez la boîte de dialogue ; ne supprimez rien pour terminer la leçon.

Pour chaque commit ordinaire du cours : Summary est le sujet indiqué, Description est vide et les options Amend Previous Commit, Skip Hooks, Add Signed-off-by, Different Author, Push After Commit et Allow Empty Commit restent désactivées.

Dans la borne

Le terminal n'utilise pas le journal de l'application. Il s'agit du modèle Git simple de ce que fait l'annulation du commit, dans une copie propre different du résultat de la leçon 18 :

Command · bash
git switch --create private/undo-demo
BEFORE_SHA="$(git rev-parse HEAD)"

Enregistrez DOC_LOST sous docs/signup-recovery.md, puis :

Command · bash
git add -- docs/signup-recovery.md
git commit --quiet -m "docs: demonstrate a reversible local commit"
AFTER_SHA="$(git rev-parse HEAD)"
git reset --soft "$BEFORE_SHA"
git status --short
Sortie
A  docs/signup-recovery.md

La branche est de retour et le dossier est mis en scène. On avance encore :

Command · bash
git reset --soft "$AFTER_SHA"
git status --short

Le statut est vide. Ces commandes not appellent Annuler ou Rétablir l'application, enregistrent une entrée de journal GitTree ou créent un instantané ; git for-each-ref refs/ogt/trash n'imprime rien dans cette copie. Dans une prise créée par une application, il répertorie les vrais noms d'instantanés, que vous lisez sans les modifier.

La protection contre une étape obsolète est une comparaison et un échange. Git a la même idée dans update-ref, qui déplace une référence uniquement si elle contient toujours la valeur attendue. Après un commit externe :

Command · bash
git update-ref refs/heads/private/undo-demo "$AFTER_SHA" "$BEFORE_SHA"

Git refuse avec "Impossible de verrouiller la référence… est à… mais attendu…". Le propre refus de GitTree est celui de l'info-bulle : "La branche a bougé depuis ; l'annulation écraserait cette modification."

Résultat

Where you end: dans la première copie, la note a été validée, annulée (mise en scène, branche sur M) et refaite (branche sur la validation, nettoyage de l'arborescence). Dans la copie obsolète, Redo a été refusé car la branche a bougé et la validation externe est restée intacte. Vous avez ouvert la boîte de dialogue d'instantané et l'avez fermée sans rien supprimer.

Erreurs courantes

  • Appuyer sur Annuler sans lire l'info-bulle et annuler une étape que vous ne vouliez pas dire.
  • En supposant que chaque action peut être annulée ou refaite : une poussée forcée et une réserve supprimée ne le sont pas, et la plupart des étapes n'ont pas de rétablissement.
  • L'annulation devrait couvrir les modifications que vous avez apportées dans un éditeur en dehors de GitTree.
  • Suppression des anciens instantanés pour ranger, ce qui supprime le chemin du retour.

Si quelque chose ne va pas

Si Annuler est désactivé, lisez la raison dans l'info-bulle : la branche a été déplacée, les fichiers ont été modifiés depuis, une télécommande a été modifiée ou il n'y a rien à annuler. Si une étape est refusée, son instantané de récupération est conservé sous refs/ogt/trash/* ; ne le supprimez pas si vous n’êtes pas sûr. Pour les commits effectués en dehors de GitTree, utilisez le reflog de la leçon 29.

Vérifiez votre compréhension

Répondez à chaque question, puis lisez pourquoi. Les questions marquées « Obligatoire » comptent pour terminer la leçon.

  1. Question 1 de 6

    Que devez-vous faire avant d'appuyer sur Annuler ?

    Choisissez une réponse.

  2. Question 2 de 6

    Laquelle de ces étapes GitTree refuse-t-il d'annuler, pour une raison indiquée ?

    Choisissez chaque réponse qui s'applique.

  3. Question 3 de 6
    Obligatoire

    Vous validez la note dans GitTree et choisissez Annuler une fois. Que vois-tu ?

    Choisissez une réponse.

  4. Question 4 de 6

    Modifiez l'entrée : après Annuler, vous validez la note mise en scène en dehors de GitTree, puis regardez Rétablir. Que vois-tu ?

    Choisissez une réponse.

  5. Question 5 de 6
    Obligatoire

    Annuler est grisé et son info-bulle indique "Son instantané de récupération a été supprimé". Que s'est-il passé et que faites-vous ?

    Choisissez une réponse.

  6. Question 6 de 6
    Obligatoire

    Dans la copie du modèle Plain-Git, quelles relectures montrent ce que fait une annulation de validation ?

    Choisissez chaque réponse qui s'applique.

0 sur 6 corrects

Répondez correctement aux questions requises pour terminer la leçon.

Vérifié dans ce navigateur.

Pratique

Notez ce que dit l'info-bulle d'annulation, à quoi ressemblaient la branche et la liste par étapes après l'annulation et ce que Redo a fait. Dans la copie périmée, écrivez la raison donnée par Redo. Nommez ensuite une étape que l’application ne peut pas annuler et dites pourquoi.

Votre propre confirmation : le site ne peut pas voir votre ordinateur.

Pour terminer la leçon, répondez correctement aux questions demandées et confirmez l'exercice pratique.

Récapitulatif

  • Lisez l'info-bulle avant d'appuyer.
  • L'annulation d'un commit maintient ses modifications par étapes.
  • Une branche déplacée ou des fichiers modifiés font refuser l'annulation ; des instantanés sont conservés.

Termes du glossaire introduits

Annuler — تراجع; Refaire — إعادة; journal — سجل العمليات; instantané de récupération - لقطة استعادة.

Transcription vidéo

La narration de la vidéo, repère par repère.

Afficher la transcription
  1. GitTree peut prendre du recul. Voici comment et où cela s'arrête.
  2. GitTree tient un journal de ses propres étapes. Annuler annule le plus récent.
  3. Avant une étape risquée, cela sauve une reprise instantané en premier.
  4. Nous avons une branche et une nouvelle note.
  5. Mettez en scène uniquement ce fichier.
  6. Rédigez le résumé. Toutes les options restent éteint.
  7. Engagez-vous une fois, en GitTree lui-même.
  8. Un commit effectué dans un terminal n'est pas dans celui-ci enregistrer.
  9. Passez la souris sur Annuler. L'info-bulle nomme l'étape : commettre.
  10. S'il nomme autre chose, arrêtez.
  11. Choisissez Annuler une fois. L'avis dit "annulé" commettre.
  12. La branche est de retour sur M.
  13. Et la note est mise en scène, pas supprimée. Rien n'est perdu.
  14. Maintenant, Redo nomme le même commit.
  15. Choisissez Rétablir une fois. Le commit est de retour.
  16. L'arbre de travail est à nouveau propre.
  17. Dans une deuxième copie, nous validons et annulons le de la même manière.
  18. Maintenant, validez la note mise en scène à l'extérieur GitTree.
  19. Rétablir est désactivé. La succursale a déménagé depuis.
  20. Cela laisse votre commit tranquille. Ne jamais forcer ça.
  21. Autres raisons : fichiers modifiés, télécommande modifié, le premier commit.
  22. Maintenant les instantanés. Exécuter Supprimer l'ancienne récupération Instantanés.
  23. Il indique que seuls les instantanés répertoriés sont supprimé.
  24. Laissez trente jours et choisissez Rechercher.
  25. Fermez-le. Rien n’expire tout seul.
  26. Dans une simple copie Git, une réinitialisation logicielle donne la même forme.
  27. En avant encore, l'arbre est propre, et il n'y a pas d'instantané d'application.
  28. Git garde une référence de la même manière : déplacez-la seulement s'il contient ce que vous attendez.
  29. L'annulation n'est pas un retour en arrière global. Il s'inverse étapes enregistrées par l'application.
  30. Pratique : rédiger l'info-bulle, le résultat de Annuler, Rétablir et la raison obsolète.
  31. Ensuite, que signifie une TÊTE détachée.