Saltar al contenido
GitTree

Lección 19 · Historia e integración

Comprender las fusiones de avance rápido

Mueva una rama de destino a una confirmación de paleta oscura descendiente existente sin crear otra confirmación. Comparemos ese avance rápido con una entrada divergente que debe rechazarse.

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

  • Reconocer el requisito de los antepasados.
  • Demuestre ID de propinas idénticas después del avance rápido.
  • Separe el movimiento de referencia de la creación de confirmación.
  • Predecir el rechazo en caso de divergencia.

Antes de empezar

Comience con una copia separada del resultado de la lección 18 (lo principal es la combinación, limpieza): cree un escenario/objetivo ff en esa confirmación, luego función/modo oscuro en la misma confirmación; la paleta oscura obtiene una confirmación D en la función. Regrese al escenario/ff-target antes de fusionarse.

El video fue grabado con Git 2.52.0 y GitTree 2.0 en Ubuntu 24.04: la paleta oscura, su confirmación, el pago y ambas fusiones se realizaron en la aplicación; Los dos escenarios se bifurcaron y los controles se ejecutaron en la terminal, y el rechazo se mostró en la aplicación y nuevamente en la terminal. 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.

Es posible un avance rápido cuando la sugerencia de destino es un antepasado de la sugerencia entrante. Mover la etiqueta de destino al descendiente incorpora las instantáneas intermedias sin inventar una confirmación de fusión.

La sugerencia resultante tiene la identidad y el padre existentes de D. La M anterior sigue siendo una fusión de dos padres de la lección 18; no cuente a sus padres y los confunda con una nueva fusión creada por esta lección.

El avance rápido es sólo una puerta de entrada a la política, no una reparación para todas las ramas. Si existe una confirmación de destino separada, ambos consejos tienen un historial único y este modo se rechaza.

Sólo la rama de destino/HEAD/index/avance de trabajo M→D. La característica permanece en D, no se crea ninguna nueva confirmación mediante la fusión, el servidor no cambia.

Prepare el estado exacto del proyecto

Comience a partir de una copia ordinaria separada del proyecto tal como lo dejó la lección 18. Las características originales de gittree permanecen conservadas; No ejecute este escenario en el pago original o en el código fuente. (Un plan anterior del curso nombraba un punto de control inicial diferente; el video utiliza el resultado de la lección 18 y los mismos pasos). La hoja de estilo a continuación es el archivo style.css del proyecto con un bloque de paleta oscura agregado. 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.

estilos.css — OSCURO

Extracto del archivo · css
:root {
  color-scheme: light;
  --page: #f7f8fa;
  --surface: #ffffff;
  --text: #17212e;
  --link: #154ab5;
  --line: #bac4d0;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  background: var(--page);
  color: var(--text);
  font: 1rem/1.6 system-ui, sans-serif;
}

a {
  color: var(--link);
}

.site-header,
main,
footer {
  width: min(68rem, 100% - 2rem);
  margin-inline: auto;
}

.site-header {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 1rem;
  padding-block: 1rem;
}

.hero {
  max-width: 48rem;
  padding-block: 3rem;
}

h1 {
  font-size: clamp(2rem, 5vw, 3.5rem);
  line-height: 1.2;
}

.cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(16rem, 100%), 1fr));
  gap: 1rem;
}

.feature-card {
  padding: 1rem;
  border: 1px solid var(--line);
  border-radius: 0.75rem;
  background: var(--surface);
}

section {
  margin-block-end: 2rem;
}

button,
input {
  font: inherit;
}

button,
input {
  padding: 0.5rem 0.75rem;
}

:focus-visible {
  outline: 3px solid var(--link);
  outline-offset: 3px;
}

form {
  display: grid;
  max-width: 28rem;
  gap: 0.5rem;
}

:root[data-theme="dark"] {
  color-scheme: dark;
  --page: #121923;
  --surface: #1b2635;
  --text: #edf2f8;
  --link: #a4c6ff;
  --line: #7388a1;
}

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 el escenario/ff-target y la característica/modo oscuro en la copia separada como se muestra a continuación; guarde OSCURIDAD completa en la función.
  2. Confirme solo estilos.css como hazaña: agregue la paleta oscura; verificar la característica D.
  3. En Local, abra la carpeta scenario, haga clic derecho en ff-target → Checkout scenario/ff-target; verifique que todavía esté en M y limpio.
  4. En Local, abra la carpeta feature, haga clic derecho en dark-mode → Merge feature/dark-mode into scenario/ff-target; revise el origen y el destino en el cuadro de diálogo.
  5. En Record it as elige Fast-forward only; no seleccione Siempre una confirmación de fusión.
  6. Elija Fusionar una vez y espere. Espere que la etiqueta objetivo alcance la D existente.
  7. Compare los SHA completos reales del objetivo y la característica, luego inspeccione el trabajo OSCURO y limpio.
  8. En una copia divergente separada (ábrala desde Nueva pestaña y Repositorios recientes), repita la combinación solo con Avance rápido: la aplicación se niega y dice que el destino tiene cambios que usted aún no tiene. Deje intacto el original canónico.

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 la copia separada del resultado de la lección 18:

Command · bash
git switch --create scenario/ff-target
git switch --create feature/dark-mode

Coloque la hoja de estilo DARK completa sobre estilos.css, luego:

Command · bash
git add -- styles.css
git commit --quiet -m "feat: add the dark palette"
git switch --quiet scenario/ff-target
git merge --quiet --ff-only feature/dark-mode
git rev-parse HEAD feature/dark-mode
git log -1 --format=%s
git status --short

La consulta SHA proporciona dos ID reales idénticos. Sujeto observado:

Salida
feat: add the dark palette

Estado vacío. El dispositivo afirmó que el objetivo es igual al D medido previamente, no a un nodo de fusión recién creado. Para entradas modificadas, agregue una confirmación independiente de docs/integration-note.md al destino en otra copia antes de fusionar; ff-solo se niega, preservando ambas ramas. No seleccione un modo diferente en silencio para que la política se marque en verde.

Resultado

Where you end: escenario/ff-target y característica/modo oscuro nombran el mismo nombre D existente. El objetivo HEAD/index/work incluye DARK, sin nuevo nodo de fusión, original principal/M sin cambios.

Errores comunes

  • Llamar a cualquier línea gráfica para unirse a una nueva confirmación de fusión.
  • 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

Si se rechaza, inspeccione ambos historiales y elija un flujo de trabajo de combinación/rebase separado solo después de la revisión. El rechazo en sí no cambia los archivos de destino ni las referencias.

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 requiere?

    Elija una respuesta.

  2. Pregunta 2 de 6

    ¿Qué cambia?

    Elija cada respuesta que corresponda.

  3. Pregunta 3 de 6
    Requerido

    ¿SHA objetivo resultante?

    Elija una respuesta.

  4. Pregunta 4 de 6
    Requerido

    Se agregó el compromiso de objetivo independiente: ¿solo ff?

    Elija una respuesta.

  5. Pregunta 5 de 6

    El viejo M tiene dos padres: ¿prueba de que esta acción se fusionó?

    Elija una respuesta.

  6. Pregunta 6 de 6
    Requerido

    ¿Qué prueba la compleció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

Demuestre que la punta del objetivo es igual a la D existente y que el trabajo coincide con la OSCURIDAD completa. Predecir el rechazo después de una confirmación de destino independiente en una copia separada; compare árbitros antiguos después del rechazo.

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

  • La relación con los antepasados permite avanzar rápidamente.
  • La confirmación entrante mantiene su ID.
  • ff-only rechaza la divergencia.

Términos del glosario introducidos

Avance rápido — تقديم سريع; descendiente—تابع; ancestro—سلف.

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. Inicie ambos nombres de sucursales en el mismo compromiso.
  5. Registre el cambio de paleta real.
  6. Regrese al objetivo sin cambios.
  7. Confirme la dirección de fusión.
  8. Requerir avance rápido solo explícitamente.
  9. Mueva la etiqueta al descendiente existente.
  10. Verifique las identidades, no solo la forma del gráfico.
  11. Preservar un objetivo divergente en lugar de forzarlo.
  12. ¿Qué se requiere?
  13. Ascendencia, no nombres ni colores, determina el avance rápido.
  14. ¿Qué cambia?
  15. El objetivo se mueve a un D existente sin un empujón.
  16. ¿SHA objetivo resultante?
  17. El objetivo medido es igual el consejo de características anterior.
  18. Se agregó el compromiso de objetivo independiente: ¿solo ff?
  19. La divergencia viola la puerta de ascendencia requerida.
  20. El viejo M tiene dos padres: ¿Prueba de que esta acción se fusionó?
  21. La ascendencia existente de M no es un nuevo compromiso de esta acción.
  22. ¿Qué prueba la compleción?
  23. Tanto la identidad de referencia como Se requiere el estado del archivo.
  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.