Saltar al contenido
GitTree

Lección 30 · Recuperación

GitTree Deshacer, rehacer y recuperar instantáneas

Deshaga una confirmación de la barra de herramientas de GitTree, rehágala y aprenda qué puede y qué no puede recuperar la aplicación, cuándo se niega y por qué mantiene instantáneas de recuperación.

Progreso guardado en este navegador.

La reproducción carga el vídeo de YouTube (modo de privacidad mejorada).

Narración en inglés · English and Arabic subtítulos

Abre la página del vídeoVer en YouTube

lo que aprenderás

  • Lea lo que haría el próximo Deshacer o Rehacer antes de presionarlo.
  • Prediga que deshacer una confirmación mantiene sus cambios preparados y que Rehacer puede recuperar la confirmación.
  • Reconozca por qué la aplicación rechaza Deshacer o Rehacer: la rama se movió, los archivos cambiaron, se cambió un control remoto.
  • Sepa qué son las instantáneas de recuperación y cómo eliminar las antiguas deliberadamente.

Antes de empezar

Estás en private/undo-demo, una rama del resultado M de la lección 18 con un árbol de trabajo limpio. Creará una pequeña nota, docs/signup-recovery.md, y la confirmará through GitTree, porque Deshacer de GitTree funciona a partir de los pasos que registra. Una confirmación realizada en una terminal es algo diferente y no entra en ese registro.

Todo es local y en el plan gratuito (GitTree te pide que inicies sesión): sin cuenta de alojamiento, sin proveedor, sin Internet. Toda identidad es ficticia (ejemplo.com). Nunca ejecute esta lección en un proyecto real.

Realice los cambios en GitTree o con los comandos nativos de Git, no ambos en la misma copia. Leer el resultado siempre es seguro. Las etiquetas del menú, la información sobre herramientas y los avisos provienen de las propias cadenas y fuentes de GitTree 2.0. Los comandos nativos se ejecutaron con Git 2.43 en copias desechables y muestran solo el modelo de Git, no el registro de la aplicación. Los pasos GitTree no se ejecutaron en macOS, Windows o Linux.

Efectos de concepto y estado.

GitTree conserva un journal de los pasos que realiza. Deshacer invierte el paso más reciente y Rehacer repite el último paso deshecho. La información sobre herramientas de la barra de herramientas nombra el paso, por ejemplo "Deshacer: confirmar ...". Léelo primero: si nombra algo diferente a lo que esperas, detente.

Antes de un paso destructivo, GitTree guarda un recovery snapshot debajo de refs/ogt/trash/* y escribe la entrada del diario. Deshacer restauraciones desde ese registro, y solo mientras nada haya cambiado desde entonces: una rama se mueve hacia atrás solo si todavía apunta donde la dejó el paso, y los archivos se restauran solo si nadie los editó después. De lo contrario, se rechaza Deshacer con un motivo y se conserva la instantánea.

Deshacer un commit mueve la rama hacia atrás y mantiene los cambios confirmados en etapa, para que no se pierda nada. Rehacer esa confirmación mueve la rama hacia adelante nuevamente hasta la misma confirmación. No todos los pasos se pueden rehacer, y algunos no se pueden deshacer: una presión forzada cambió un control remoto ("presione nuevamente para volver a cambiarlo"); un alijo eliminado se conserva como una instantánea, pero aún no se deshace; el primer compromiso no tiene un estado anterior. Un paso que se detuvo a mitad de camino no tiene un resultado completo que deshacer.

Las instantáneas no se eliminan según una programación. El comando Delete Old Recovery Snapshots… le permite elegir una edad, muestra exactamente qué instantáneas son más antiguas y las elimina solo después de confirmar. Al eliminar una instantánea, se elimina el camino de regreso a ese paso.

Deshacer y Rehacer cambian sólo el repositorio local. No se publica nada.

Prepare el estado exacto del proyecto

Comience con una copia ordinaria separada del resultado M de la lección 18 en la que confíe y deje el original intacto. Crea la rama y haz la nota. DOC_LOST es el contenido de la nota.

Entradas de archivos completas

Guarde solo en la fase que se menciona a continuación. Estos son cuerpos UTF-8/LF completos con una nueva línea final; Nunca pegues vallas Markdown. Los archivos ejecutables sin cambios heredan la entrada nombrada. Las versiones en variantes separadas no deben sobrescribir el original.

docs/signup-recovery.md — DOC_LOST

Salida
# Recovered signup work

Keep a branch name before leaving useful experimental work.

En GitTree

Abra la paleta con Comando+Mayús+P (Ctrl+Mayús+P en Ubuntu). Undo y Redo están en la barra de herramientas y en la paleta; los atajos son Comando+Z para Deshacer y Comando+Mayús+Z o Comando+Y para Rehacer (Ctrl en Windows y Linux).

  1. En una copia separada, cree la rama private/undo-demo y guarde DOC_LOST como docs/signup-recovery.md. Abra la lista de cambios: el archivo es nuevo.
  2. Prepare solo ese archivo y confírmelo con el Resumen docs: demonstrate a reversible local commit. Espere el resultado real.
  3. Coloca el cursor Undo en la barra de herramientas. La información sobre herramientas dice "Deshacer: confirmar...". Si indica otro paso, deténgase: no deshaga algo que no era su intención.
  4. Elija Undo una vez. El aviso dice "Deshacer: confirmar". La rama está nuevamente en M y la nota es staged, no eliminada.
  5. Coloca el cursor sobre Redo. La información sobre herramientas dice "Rehacer: confirmar ...". Elija Redo una vez. El aviso dice "Redid: confirmar". El compromiso ha vuelto y el árbol de trabajo está limpio.
  6. Separate stale-state copy. En una segunda copia, repita los pasos del 1 al 4 y luego, fuera de GitTree, confirme la nota preparada con git commit -m "docs: external move after app undo". Mire Redo: está deshabilitado y su motivo es "La rama se movió desde; deshacerlo sobrescribiría ese cambio". No lo fuerces.
  7. Abra la paleta y ejecute Delete Old Recovery Snapshots…. Deje Older than (days) en 30 y elija Find. Lea lo que dice la lista: "Ninguna instantánea es tan antigua". o una lista de los antiguos. Cierre el cuadro de diálogo; No borre nada para terminar la lección.

Para cada confirmación ordinaria del curso: Summary es el asunto indicado, Description está vacío y las opciones Amend Previous Commit, Skip Hooks, Add Signed-off-by, Different Author, Push After Commit y Allow Empty Commit permanecen desactivadas.

en la terminal

El terminal no utiliza el diario de la aplicación. Este es el modelo Git simple de lo que hace la deshacer confirmación, en una different copia limpia del resultado de la lección 18:

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

Guarde DOC_LOST como docs/signup-recovery.md y luego:

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
Salida
A  docs/signup-recovery.md

La sucursal ha vuelto y el expediente está preparado. Avanzando de nuevo:

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

El estado está vacío. Estos comandos not llaman a Deshacer o Rehacer de la aplicación, registran una entrada de diario GitTree o crean una instantánea; git for-each-ref refs/ogt/trash no imprime nada en esta copia. En una toma creada por la aplicación, se enumeran los nombres reales de las instantáneas, que se leen sin cambiarlos.

La protección contra un paso obsoleto es comparar e intercambiar. Git tiene la misma idea en update-ref, que mueve una referencia solo si todavía mantiene el valor esperado. Después de una confirmación externa:

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

Git se niega con "no se puede bloquear la referencia... está en... pero se espera...". El propio rechazo de GitTree es el que aparece en la información sobre herramientas: "La rama se movió desde entonces; deshacerlo sobrescribiría ese cambio".

Resultado

Where you end: en la primera copia, la nota fue confirmada, deshecha (preparada, bifurcada en M) y rehecha (bifurcada en la confirmación, árbol limpio). En la copia obsoleta, se rechazó Rehacer porque la rama se movió y la confirmación externa se dejó intacta. Abriste el cuadro de diálogo de instantánea y lo cerraste sin eliminar nada.

Errores comunes

  • Presionar Deshacer sin leer la información sobre herramientas y deshacer un paso que no pretendía.
  • Suponiendo que cada acción se puede deshacer o rehacer: un impulso forzado y un alijo eliminado no lo son, y la mayoría de los pasos no tienen Rehacer.
  • Esperando que Deshacer cubra las ediciones realizadas en un editor externo a GitTree.
  • Eliminando instantáneas antiguas para ordenar, lo que elimina el camino de regreso.

Si algo sale mal

Si Deshacer está deshabilitado, lea el motivo en la información sobre herramientas: la rama se movió, los archivos se editaron desde entonces, se cambió un control remoto o no hay nada que deshacer. Si se rechaza un paso, su instantánea de recuperación se mantiene en refs/ogt/trash/*; no lo elimines mientras no estés seguro. Para confirmaciones realizadas fuera de GitTree, utilice el reflog de la lección 29.

Comprueba tu comprensión

Responda cada pregunta y luego lea por qué. Las preguntas marcadas como "Obligatorias" cuentan para completar la lección.

  1. Pregunta 1 de 6

    ¿Qué debes hacer antes de presionar Deshacer?

    Elija una respuesta.

  2. Pregunta 2 de 6

    ¿Cuál de estos pasos GitTree se niega a deshacer, indicando el motivo?

    Elija cada respuesta que corresponda.

  3. Pregunta 3 de 6
    Requerido

    Confirmas la nota en GitTree y eliges Deshacer una vez. ¿Qué ves?

    Elija una respuesta.

  4. Pregunta 4 de 6

    Cambie la entrada: después de Deshacer, confirma la nota preparada fuera de GitTree y luego mira Rehacer. ¿Qué ves?

    Elija una respuesta.

  5. Pregunta 5 de 6
    Requerido

    Deshacer está atenuado y su información sobre herramientas dice "Se eliminó su instantánea de recuperación". ¿Qué pasó y qué haces?

    Elija una respuesta.

  6. Pregunta 6 de 6
    Requerido

    En la copia del modelo simple de Git, ¿qué lecturas muestran lo que hace una deshacer confirmación?

    Elija cada respuesta que corresponda.

0 de 6 correcto

Responda correctamente las preguntas requeridas para completar la lección.

Comprobado en este navegador.

Practica

Escriba lo que decía la información sobre herramientas Deshacer, cómo se veían la rama y la lista preparada después de Deshacer y qué hizo Rehacer. En la copia obsoleta, escriba el motivo que dio Redo. Luego, mencione un paso que la aplicación no pueda deshacer y diga por qué.

Su propia confirmación: el sitio no puede ver su computadora.

Para completar la lección, responde correctamente a las preguntas requeridas y confirma el ejercicio práctico.

Resumen

  • Lea la información sobre herramientas antes de presionar.
  • Deshacer una confirmación mantiene sus cambios preparados.
  • Una rama movida o archivos editados hacen que Deshacer se rechace; Se conservan las instantáneas.

Términos del glosario introducidos

Deshacer — تراجع; Rehacer — إعادة; diario — سجل العمليات; instantánea de recuperación - لقطة استعادة.

Transcripción del vídeo

La narración del vídeo, cue a cue.

Mostrar la transcripción
  1. GitTree puede retroceder algunos pasos. Aquí está cómo y dónde se detiene.
  2. GitTree lleva un diario de sus propios pasos. Deshacer invierte el más nuevo.
  3. Ante un paso arriesgado, salva una recuperación instantánea primero.
  4. Contamos con sucursal, y nueva nota.
  5. Prepare solo ese archivo.
  6. Escribe el resumen. Todas las opciones se quedan. apagado.
  7. Confirme una vez, en GitTree sí mismo.
  8. Un compromiso realizado en una terminal no está en este registro.
  9. Pase el cursor sobre Deshacer. La información sobre herramientas nombra el paso: comprometerse.
  10. Si menciona algo más, detente.
  11. Elija Deshacer una vez. El aviso dice deshecho comprometerse.
  12. La sucursal está de vuelta en M.
  13. Y la nota se prepara, no se elimina. No se pierde nada.
  14. Ahora Rehacer nombra el mismo compromiso.
  15. Elija Rehacer una vez. El compromiso ha vuelto.
  16. El árbol de trabajo vuelve a estar limpio.
  17. En una segunda copia, confirmamos y deshacemos el de la misma manera.
  18. Ahora envíe la nota preparada afuera. GitTree.
  19. Rehacer está deshabilitado. La sucursal se mudó desde entonces.
  20. Deja tu compromiso en paz. Nunca fuerces eso.
  21. Otras razones: archivos editados, un control remoto cambiado, la primera confirmación.
  22. Ahora las instantáneas. Ejecute Eliminar recuperación anterior Instantáneas.
  23. Dice que solo las instantáneas enumeradas son eliminado.
  24. Deje treinta días y elija Buscar.
  25. Ciérralo. Nada caduca por sí solo.
  26. En una copia simple de Git, un reinicio por software proporciona la misma forma.
  27. Adelante de nuevo, el árbol está limpio y no hay una instantánea de la aplicación.
  28. Git protege un árbitro de la misma manera: muévelo Sólo si tiene lo que esperas.
  29. Deshacer no es un retroceso global. se invierte pasos que grabó la aplicación.
  30. Práctica: escribe la información sobre herramientas, el resultado de Deshacer, Rehacer y el motivo obsoleto.
  31. A continuación, qué significa una CABEZA separada.