Saltar al contenido
GitTree

Lección 20 · Historia e integración

Cambiar la base del trabajo inédito sobre una nueva base

Reproduzca una confirmación de registro no publicada en una base actualizada de forma independiente. Conserve el consejo anterior y verifique la nueva identidad, el nuevo padre y el contenido de registro previsto sin cambios.

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

  • Identifique el rango de reproducción privado exacto.
  • Proteja el historial antiguo comprometido antes de volver a reproducirlo.
  • Reconocer identidades de confirmación recreadas.
  • Verifique el árbol principal y el árbol resultante completo.

Antes de empezar

Comience con una copia separada del resultado de la lección 18 (la principal es la combinación M, limpia): la función de tema privado/formulario de registro contiene una confirmación S, la principal actualizada contiene una confirmación N diferente, ambas en M, y el rescate/registro antes de rebase también apunta a S. El tema está retirado, limpio y no publicado.

El vídeo fue grabado con Git 2.52.0 y GitTree 2.0 en Ubuntu 24.04: el tema privado y la base más nueva se construyeron en la terminal; el rebase, su diálogo y las comprobaciones del resultado se realizaron en la aplicación; el resultado se volvió a leer en la terminal. La repetición nativa a continuación se ejecutó en una copia desechable y arrojó el mismo resultado. No se ejecutó nada en macOS o Windows, y Ubuntu es el único sistema Linux registrado. El nivel mínimo de Git de origen de GitTree es 2.39.0.

GitTree te pide que inicies sesión; El plan gratuito cubre cada paso aquí. No se necesita cuenta de proveedor, Pro/trial, credencial API o servicio de Internet. Un origen desnudo local no es GitLab o CI. Todas las identidades utilizan example.com; nunca ejecute esta lección dentro de un proceso de pago de código fuente.

Realice mutaciones a través de GitTree o la ruta nativa en entradas idénticas, no ambas consecutivamente. La verificación de solo lectura puede seguir a cualquiera de los dos. Cualquier preparación descrita como trabajo terminal se etiqueta como preparación nativa, nunca como característica inventada de una aplicación.

Efectos de concepto y estado.

Rebase selecciona confirmaciones exclusivas del tema actual y reproduce sus cambios en una nueva base. No mueve los viejos compromisos; crea nuevas confirmaciones con nuevos padres y, por lo general, nuevas identificaciones.

La rama de origen debe ser la rama actual prevista. En este accesorio, S agrega registro y N agrega un documento diferente, por lo que la reproducción está libre de conflictos, pero eso no hace que las rebases arbitrarias sean seguras.

La historia publicada es un límite de coordinación. Estas confirmaciones son intencionalmente privadas; no cambie la base de la función de precios ya publicada simplemente para aclarar su gráfico. Una referencia de rescate protege la ascendencia comprometida, no el texto no guardado.

Característica y avance HEAD S→S′; índice/trabajo se convierte en el árbol combinado. N/principal actualizado, rescate S y principal/M original permanecen fijos. Sin mutación del servidor ni envío automático.

Prepare el estado exacto del proyecto

Comience desde una copia ordinaria separada del proyecto tal como lo dejó la lección 18 (la principal es la combinación M). Las características originales de gittree permanecen conservadas; No ejecute este escenario en el pago original o en el código fuente. Luego realice la preparación exacta a continuación. La firma de demostración local del repositorio está desactivada y GitTree Demo <demo@example.com> es la identidad.

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.

index.html — REGÍSTRESE

Extracto del archivo · html
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>GitTree Features — course demo</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <header class="site-header">
    <a href="#main">GitTree Features</a>
  </header>
  <main id="main" tabindex="-1">
    <section class="hero" aria-labelledby="hero-title">
      <p class="eyebrow">GitTree Learn demo project</p>
      <h1 id="hero-title">See your work clearly.</h1>
      <p id="hero-copy">Choose one change, then check what Git saved.</p>
    </section>
    <section class="features" aria-labelledby="features-title">
      <h2 id="features-title">Follow your work</h2>
      <div class="cards">
        <article class="feature-card">
          <h3>History</h3>
          <p>Read commits and branches together.</p>
        </article>
        <article class="feature-card">
          <h3>Changes</h3>
          <p>Review the exact content selected for a commit.</p>
        </article>
        <article class="feature-card">
          <h3>Recovery</h3>
          <p>Inspect the scope of a recovery point before using it.</p>
        </article>
      </div>
    </section>
    <section aria-labelledby="plans-title">
      <h2 id="plans-title">Choose the workflow you need</h2>
      <div class="cards">
        <article class="feature-card">
          <h3>Local Git</h3>
          <p>Local Git workflows work without signing in.</p>
        </article>
        <article class="feature-card">
          <h3>Connected workflows</h3>
          <p>Provider integrations and Nour require Pro or an applicable trial.</p>
        </article>
      </div>
    </section>
    <section aria-labelledby="signup-title">
      <h2 id="signup-title">Try the demo form</h2>
      <form id="signup-form" novalidate>
        <label for="demo-email">Demo email</label>
        <input id="demo-email" name="email" type="email" autocomplete="off" aria-describedby="signup-hint">
        <p id="signup-hint">Use a fictional example.com address. Nothing is sent.</p>
        <button type="submit">Check the address locally</button>
        <p id="signup-result" role="status"></p>
      </form>
    </section>
  </main>
  <footer><p>Built by a fictional team for GitTree Learn. Review one change at a time.</p></footer>
  <script type="module" src="site.js"></script>
</body>
</html>

docs/integration-note.md — DOC_MERGE

Salida
# Integration review

This note was written on main while signup work was private.

En GitTree

Paleta: Comando+Mayús+P (Ctrl+Mayús+P en Ubuntu); escriba el comando con nombre exacto y selecciónelo. Las acciones de referencia con nombre usan el menú contextual de esa fila, no un acceso directo de paleta sin argumentos.

  1. Prepare la rama exacta de divergencia y rescate utilizando la configuración nativa etiquetada a continuación; no se reescribe ninguna rama publicada.
  2. En la aplicación, confirme la función/formulario de registro retirado, limpio y no publicado; inspeccionar S y N.
  3. Haga clic derecho en updated-main en el gráfico → Rebase feature/signup-form onto updated-main; el cuadro de diálogo nombra la rama actual y el destino.
  4. Leer Options for this rebase. Deje Stash local changes and put them back y Move the branches that point into these commits desactivados. El cuadro de diálogo dice que la función/formulario de registro anterior se mantiene en refs/ogt/trash.
  5. Elija Rebase feature/signup-form una vez; Espere el aviso de que finalizó la rebase. Si se detiene, mantenga su estado operativo en lugar de hacer clic nuevamente.
  6. Inspeccione S′ padre N y sujeto. Compare las identificaciones antiguas/nuevas reales, no las etiquetas del modelo como salida del terminal.
  7. Inspeccione SIGNUP y DOC_MERGE completos en el árbol resultante; La rama de rescate todavía apunta al viejo S.
  8. Verificar el estado limpio y sin operación de rebase; deje en paz el main/M original y todas las referencias del servidor.

Para cada confirmación ordinaria: el resumen es el tema indicado; Descripción vacía; Modificar la confirmación anterior, omitir enlaces, agregar firmada por otro autor, presionar después de la confirmación y permitir la confirmación vacía; sin coautores. Prepare solo los archivos nombrados, luego confirme los cambios en N archivos una vez (Archivo para uno), o Comando+Entrar como alternativa. Espere el resultado real. Una lección que modifica explícitamente cambia sólo esa opción indicada.

en la terminal

En una copia limpia separada de la lección 18/M, cree el tema privado:

Command · bash
git switch --create feature/signup-form

Coloque el archivo de REGISTRO guardado en index.html (el video guardó los archivos de la lección en ~/Descargas y usa cp ~/Downloads/SIGNUP.html index.html), luego:

Command · bash
git add -- index.html
git commit --quiet -m "feat: add the local signup demonstration"
git branch rescue/signup-before-rebase
BASE_SHA="$(git rev-parse HEAD~1)"
git switch --quiet --create updated-main "$BASE_SHA"

En la página principal actualizada, coloque DOC_MERGE en docs/integration-note.md (cp ~/Downloads/DOC_MERGE.md docs/integration-note.md), luego:

Command · bash
git add -- docs/integration-note.md
git commit --quiet -m "docs: add the integration review"
git switch --quiet feature/signup-form

BASE_SHA es el padre M medido antes de la confirmación del registro privado. Tanto el tema como el principal actualizado ahora tienen una confirmación independiente; Rescue/signup-before-rebase conserva el tema anterior. No se publica nada de este tema.

Alternativa de reproducción nativa:

Command · bash
git rebase --quiet --no-autostash --no-update-refs --no-autosquash updated-main
git log -1 --format=%s
git rev-parse HEAD HEAD^ updated-main rescue/signup-before-rebase
git status --short

Sujeto observado:

Salida
feat: add the local signup demonstration

La CABEZA real difiere de la S rescatada; HEAD^ es igual a actualizado-principal/N. El documento independiente y el cuerpo exacto de REGISTRO permanecen; El estado breve es silencioso. Deténgase en una entrada sucia/publicada inesperada en lugar de agregar opciones de fuerza. Para la variante de conflicto, consulte la lección 23; no trate una rebase detenida como si ya estuviera terminada.

Resultado

Where you end: puntos de característica/formulario de registro S′, padre N, con registro más DOC_MERGE; La antigua S sobrevive en rescate/registro antes de rebase. Ninguna operación activa, limpia; main/M y servidor sin cambios.

Errores comunes

  • Suponer un gráfico directo significa que el antiguo ID de confirmación sobrevivió.
  • Tratar el panel alternativo como el punto de control original.
  • Repetir una mutación completada después del éxito de la aplicación.

Si algo sale mal

Antes de reproducir, la rama de rescate retiene S. Si la operación se detiene, inspeccione el banner y resuelva o cancele explícitamente; un rebase completo no se cancela con rebase --abort. Nunca asuma que la repetición nativa escribió un diario GitTree.

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é se repite?

    Elija una respuesta.

  2. Pregunta 2 de 6

    ¿Qué se debe comprobar?

    Elija cada respuesta que corresponda.

  3. Pregunta 3 de 6
    Requerido

    S reproducido en N: ¿padre?

    Elija una respuesta.

  4. Pregunta 4 de 6
    Requerido

    Cambiar entrada: la misma línea de héroe cambió en ambos lados.

    Elija una respuesta.

  5. Pregunta 5 de 6

    ¿Puede --abort deshacer una rebase ya finalizada?

    Elija una respuesta.

  6. Pregunta 6 de 6
    Requerido

    ¿Qué prueba este resultado?

    Elija cada respuesta que corresponda.

0 de 6 correcto

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

Comprobado en este navegador.

Practica

Demuestre que el nuevo HEAD difiere del rescate, su padre es igual a N y los bytes completos de registro/documento coinciden. Predice conflictos si ambos bandos cambian la misma línea de héroe, en una copia separada de la lección 23.

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

  • Rebase recrea las confirmaciones.
  • Elija la rama actual y el destino explícitamente.
  • La historia privada y el alcance de la recuperación son importantes.

Términos del glosario introducidos

Rebase — إعادة تأسيس; repetición — إعادة تطبيق; referencia de rescate - مرجع حفظ.

Transcripción del vídeo

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

Mostrar la transcripción
  1. Comience desde el punto de control exacto.
  2. Nombra la sucursal, índice y versión funcional.
  3. Prepare sólo la copia aislada del curso.
  4. preparar el privado divergencia y rescate ref.
  5. Compruebe qué sucursal está realmente vigente.
  6. Elija la nueva base prevista.
  7. Mantenga desactivadas las opciones de repetición no relacionadas.
  8. Espere el resultado real de la repetición.
  9. El nuevo padre significa una nueva identidad de confirmación.
  10. Verifique el contenido combinado completo.
  11. Conservar la punta anterior. sin publicarlo.
  12. ¿Qué se repite?
  13. El rango de confirmación seleccionado es recreado en la nueva base.
  14. ¿Qué se debe comprobar?
  15. El alcance determina qué los commits y los árbitros pueden moverse.
  16. S reproducido en N: ¿padre?
  17. La nueva confirmación S′ está encabezada por N.
  18. Cambiar entrada: mismo héroe La línea cambió en ambos lados.
  19. La repetición puede detenerse; resolución y la continuación son explícitos.
  20. ¿Puede --abort deshacer una ¿Ya terminó la rebase?
  21. La cancelación necesita una operación activa; completado la recuperación necesita evidencia preservada.
  22. ¿Qué prueba este resultado?
  23. Los mensajes pueden permanecer igual mientras las identidades cambian.
  24. Verifique el resultado real, no sólo un mensaje.
  25. Predecir la entrada modificada antes de actuar.
  26. Preservar el trabajo útil antes de la recuperación.
  27. Pruebe el punto de control antes de continuar.
  28. Mantener el resultado verificado para el siguiente paso.