Saltar al contenido
GitTree

Lección 3 · Cimentaciones

Predice lo que contendrá tu próxima confirmación

Separe los archivos que está editando de la instantánea preparada para una confirmación y del historial registrado. Utilice el héroe de las funciones GitTree del futuro para explicar por qué un archivo se puede preparar y modificar.

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

  • Distinga el árbol de trabajo, el índice y la última confirmación registrada.
  • Prediga qué cambio de puesta en escena, edición y confirmación normal.
  • Lea ambas columnas de estado breve sin asumir que por etapas significa salvado para siempre.
  • Utilice comparaciones separadas para cambios graduales y no graduales.

Antes de empezar

Lea primero la lección 1; La lección 2 prepara Git y su identidad de confirmación. Empiezas con no course repository y terminas sin uno: esta es una lección conceptual. La primera inicialización práctica es la lección 4, dentro de GitTree.

Esta lección muestra una vista previa de cuatro estados que creará usted mismo en la lección 5. Los resultados del terminal a continuación y las pantallas GitTree en el video provienen de una copia desechable del proyecto futuro: los comandos y las pantallas se grabaron con Git 2.52.0 y GitTree 2.0 en Ubuntu 24.04. No se ejecutaron en macOS. Cada una de estas escenas en el video está etiquetada como "Vista previa de la lección 5 futura". No ejecute los comandos de estado futuro en un repositorio de trabajo no relacionado ni inicialice un repositorio de práctica adicional ahora; mire y lea la vista previa, luego repita las consultas cuando la lección 5 llegue a esos estados.

El mínimo inspeccionado de GitTree es Git 2.39.0. En macOS, presione Comando donde Windows y Linux usan Ctrl. Los comandos no se ejecutaron en Windows. No se necesita proveedor, cuenta, Pro o prueba para el modelo local.

Concepto: tres lugares, ningún archivo en movimiento

Su working tree son los archivos del proyecto en el disco. Editar y guardar un archivo cambia esos bytes. Git no necesariamente los ha seleccionado para una confirmación.

El index, también llamado staging area, describe la siguiente instantánea que estás preparando. La preparación de un archivo actualiza su entrada de índice a partir de su contenido actual. No es una suscripción permanente a ediciones posteriores.

Un commit registra un árbol más metadatos y relaciones principales. HEAD identifica su posición actual, generalmente a través de la sucursal registrada. Antes de la primera confirmación, HEAD puede nombrar una rama no nacida aunque no exista ninguna confirmación de rama.

Una analogía útil es un borrador de trabajo, una edición preparada y una edición grabada. No tome la analogía literalmente: la preparación no mueve ni elimina el archivo de trabajo. En una ruta de seguimiento normal, las tres versiones pueden coincidir o diferir de forma independiente.

Usamos una confirmación normal del índice preparado, without -a, argumentos de ruta explícitos, preparación automática o modificación. Otros modos de confirmación no son intercambiables con este ejemplo. Referencia adicional de Git explica el comportamiento de la instantánea en la etapa de preparación; la referencia de diferenciación distingue las comparaciones.

El ejemplo futuro exacto

El archivo es index.html. Su título permanece Understand every change. Su línea de apoyo tiene dos versiones:

Extracto del archivo · html
<p id="hero-copy">A clear view of Git history.</p>

Edición de trabajo posterior:

Extracto del archivo · html
<p id="hero-copy">Choose one change, then check what Git saved.</p>

Estos son extractos de líneas de la página original completa y de la página editada completa del proyecto, no archivos de reemplazo para pegar sobre la página completa.

Estado futuroÚltima confirmacióníndicearchivo de trabajoEstado breve para index.html
R: crear archivosSin compromisoSin entradapagina original?? index.html
B: archivos de demostración del escenarioSin compromisopagina originalpagina originalA index.html
C: editar después de la puesta en escenaSin compromisopagina originalpagina editadaAM index.html
D: confirmar el índicepagina originalpagina originalpagina editada M index.html

El proyecto completo también contiene un archivo README. Ambos archivos se preparan antes de la primera confirmación; Los ejemplos de estado están restringidos a index.html. En D, el archivo README está limpio e index.html mantiene su edición deliberada sin etapas.

Para las filas normales que no entran en conflicto aquí, la primera columna del estado corto compara el índice con HEAD; el segundo compara el árbol de trabajo con el índice. ?? es el marcador especial sin seguimiento, no dos columnas de modificación ordinarias. Un espacio líder en materia M.

que cambia

  • Stage: actualiza el contenido del índice; sin compromiso ni movimiento de rama, sin reescritura del archivo de trabajo.
  • Edit after staging: actualiza solo los bytes de trabajo; el índice preparado sigue siendo la versión anterior.
  • Normal commit: registra la instantánea preparada y actualiza la sucursal local actual. El índice sigue siendo esa instantánea; Quedan ediciones de trabajo posteriores no relacionadas.
  • Remote: ninguno de estos pasos locales envía, recupera o crea una referencia de seguimiento remoto. Este ejemplo no tiene control remoto.

El índice es más que una lista de nombres. Los conflictos avanzados pueden contener múltiples etapas de índice; Aquí estamos modelando entradas de archivos normales de etapa cero, no fusiones no resueltas.

En la terminal: vista previa del futuro punto de control

Do not execute these in the still-uninitialized learner project. Se ejecutaron en una copia desechable que contenía el archivo README completo y ambas versiones de la página. La lección 5 proporciona los pasos reales de creación y puesta en escena.

En el futuro estado C, inspeccionar las dos versiones.

Command · bash
git status --short -- index.html

Observado:

Salida
AM index.html

Lea el archivo preparado directamente:

Command · bash
git show :index.html

Observado full output:

Salida
<!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>
</head>
<body>
  <header class="site-header">
    <a href="#main">GitTree Features</a>
  </header>
  <main id="main">
    <section class="hero" aria-labelledby="hero-title">
      <p class="eyebrow">GitTree Learn demo project</p>
      <h1 id="hero-title">Understand every change.</h1>
      <p id="hero-copy">A clear view of Git history.</p>
    </section>
  </main>
  <footer><p>Built by a fictional team for GitTree Learn.</p></footer>
</body>
</html>

Compare el árbol de trabajo con el índice:

Command · bash
git diff -- index.html

Observado:

Salida
diff --git a/index.html b/index.html
index 5470374..27f8718 100644
--- a/index.html
+++ b/index.html
@@ -13,7 +13,7 @@
     <section class="hero" aria-labelledby="hero-title">
       <p class="eyebrow">GitTree Learn demo project</p>
       <h1 id="hero-title">Understand every change.</h1>
-      <p id="hero-copy">A clear view of Git history.</p>
+      <p id="hero-copy">Choose one change, then check what Git saved.</p>
     </section>
   </main>
   <footer><p>Built by a fictional team for GitTree Learn.</p></footer>

Las abreviaturas de objetos anteriores son ID de blobs de archivos reales de estos cuerpos de archivos LF exactos, no SHA de confirmación inventados. La longitud/salida de su abreviatura puede diferir según la configuración.

Inspeccione la adición por etapas, en relación con el historial vacío antes de la primera confirmación:

Command · bash
git diff --cached --stat -- index.html

Observado:

Salida
 index.html | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

--stat resume; No es una revisión de contenido. La instantánea completa es el archivo anterior mostrado por git show :index.html.

En el estado futuro D, verifique lo que se registró.

Después de la confirmación normal del índice preparado en la lección 5:

Command · bash
git log -1 --format=%s
git status --short -- index.html
git diff --cached -- index.html

Se observaron las dos primeras salidas, en orden:

Salida
feat: add the GitTree Features hero
 M index.html

El tercer comando imprime no output y sale exitosamente: index y HEAD están de acuerdo para esta ruta. Esto no significa que el árbol de trabajo esté limpio. La diferencia de trabajo todavía muestra la edición de la línea de apoyo anterior. Esta es una razón común por la que "la confirmación omitió mi última edición" es en realidad el comportamiento correcto de Git.

En GitTree

En su contexto actual sin repositorio

  1. Mantenga New Tab abierto, usando Command+T / Ctrl+T (tab.new) si es necesario.
  2. Abra Feature Guide con Option+H en macOS o Alt+H en otro lugar, o abra Command Palette… con Command+Shift+P / Ctrl+Shift+P y elija Feature Guide.
  3. En Features, escribe stage en Search features y lee Stage and commit. No ejecute una acción de inicialización. La tarjeta es una orientación, no una prueba de un expediente preparado.
  4. Presione Escape para cerrar la guía. Su repositorio de cursos aún no existe.

Los mismos estados en GitTree (se muestra en el vídeo)

El vídeo abre una copia desechable del proyecto futuro en GitTree, denominado "Vista previa de la lección 5 futura". No es tu proyecto ni una grabación de tu trabajo.

  1. En C, abra Command Palette…, escriba Show Working Changes y elija ese comando exacto (wip.show). No existe ningún atajo predeterminado para este comando.
  2. Inspeccione los Unstaged Files y Staged Files del panel derecho. index.html aparece en ambos porque tiene dos comparaciones diferentes; No son dos archivos físicos.
  3. Haga clic en su fila en Unstaged Files. Espere que la diferencia central muestre la página original cambiando a la página editada, incluido el cambio de línea de soporte.
  4. Haga clic en su fila en Staged Files. Espere la adición por etapas, que contiene la línea de apoyo anterior. La simple inspección de cualquiera de las filas no prepara ni deshace nada.
  5. En D, después del compromiso normal, el gráfico tiene el primer compromiso; Staged Files dice Nothing is staged. A commit contains only staged changes. La edición de trabajo permanece en Unstaged Files.
  6. Haga not clic en Stage File, Unstage File, Stage All Changes o Discard Changes… en esta vista previa del concepto. Las instrucciones dedicadas de creación y confirmación se encuentran en las lecciones 4 y 5.

Resultado

Puede predecir D a partir de C: la primera confirmación registra la línea de soporte anterior, mientras que la edición de trabajo posterior permanece. Su propio proyecto permanece en el estado sin repositorio. El gráfico del proyecto futuro es una vista previa etiquetada explícitamente, no su trabajo completado.

Errores comunes

  • “Staged means all future edits are included.” Significa que el índice contiene una versión seleccionada en ese punto.
  • “Empty cached diff means no edits.” Dice índice y HEAD de acuerdo para la ruta seleccionada; Inspeccione también el diferencial de trabajo.
  • “Two lists mean two files.” Son dos comparaciones para el mismo camino.
  • “A staged file is safely committed.” El índice es mutable; no es un historial duradero ni una copia de seguridad.
  • “Commit means remote update.” No hay ningún control remoto en este ejemplo y no se produce ninguna inserción.

Si algo sale mal

Si ejecuta una consulta de repositorio ahora y obtiene "no es un repositorio de git", mantenga intacto el punto de control de la lección y lea la vista previa. No cree un segundo repositorio para que un comando de ejemplo tenga éxito.

Si su propio proyecto luego muestra un estado diferente, inspeccione la ruta seleccionada antes de intentar repararlo. ¿Volviste a actuar después de la edición? Eso cambia la instantánea preparada y, por lo tanto, la confirmación prevista. ¿Usaste un comando de etapa automática? Esa es una operación diferente de la confirmación normal de solo índice aquí.

En esta etapa nos recuperamos identificando la comparación correcta, no destruyendo el contenido. La lección 5 muestra decisiones de puesta en escena seguras y la ruta de recuperación enseña Deshacer y volver a registrar con alcance verificado. GitTree las instantáneas de la papelera no son una promesa de que cada archivo guardado arbitrariamente por el editor sea recuperable.

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é instantánea proporciona el compromiso normal modelado aquí?

    Elija una respuesta.

  2. Pregunta 2 de 6

    En C, ¿qué cambió debido a la edición posterior a la puesta en escena?

    Elija cada respuesta que corresponda.

  3. Pregunta 3 de 6
    Requerido

    En C, confirme el índice sin volver a realizar la preparación. ¿Qué línea se graba?

    Elija una respuesta.

  4. Pregunta 4 de 6
    Requerido

    Comience en C, prepare la versión editada y luego confirme. ¿Qué cambia?

    Elija una respuesta.

  5. Pregunta 5 de 6

    En D, la diferencia en caché está vacía pero el estado es espacio y luego M. ¿Por qué?

    Elija una respuesta.

  6. Pregunta 6 de 6
    Requerido

    siga A → B → C, luego realice la confirmación normal del índice. ¿Qué observaciones prueban D?

    Elija cada respuesta que corresponda.

0 de 6 correcto

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

Comprobado en este navegador.

Practica

Antes de la lección 5, haga predicciones en papel: prepare un archivo, edítelo después de la preparación y luego confirme normalmente. ¿Qué línea de apoyo se graba y dónde queda la edición posterior? Luego cambie la secuencia: prepare el archivo editado nuevamente antes de enviarlo. Ahora la línea grabada debería ser la más nueva, sin que quede ninguna diferencia de trabajo. El vídeo muestra ambas rutas con salida real; comprobará ambos usted mismo en la lección 5.

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

  • Los archivos de trabajo, el índice y el historial registrado son instantáneas diferentes.
  • La puesta en escena captura los contenidos elegidos; las ediciones posteriores no lo actualizan automáticamente.
  • Inspeccione ambas comparaciones y no confunda una confirmación local con una acción remota.

Términos del glosario introducidos

Árbol de trabajo — مجلد العمل; área de preparación / índice — منطقة التجهيز / الفهرس; cometer — إيداع; ref—مرجع; sin seguimiento — غير مُتتبَّع; puesto en escena — مُجهَّز. HEAD sigue siendo el identificador técnico literal.

Transcripción del vídeo

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

Mostrar la transcripción
  1. Predecir el compromiso separando archivos de trabajo, el índice y el historial.
  2. Esta es una vista previa del proyecto futuro. tu El propio repositorio aún no se ha creado.
  3. Utilice tres instantáneas etiquetadas, no es un archivo que se mueve entre cajas.
  4. El árbol de trabajo contiene archivos que edita y guarda en el disco.
  5. El índice describe la instantánea. te estás preparando para un compromiso.
  6. Una confirmación registra una instantánea, metadatos y su relación con la historia anterior.
  7. Antes del primer compromiso, la rama tiene un nombre pero aún no hay información registrada.
  8. La puesta en escena selecciona los contenidos actuales, no ediciones posteriores, sin mover el archivo.
  9. Nuestro futuro héroe comienza. con esta línea de apoyo.
  10. En A, el archivo existe sólo en el árbol de trabajo y no se realiza seguimiento.
  11. Prepare los archivos de demostración. el indice ahora tiene el héroe original.
  12. Editar después de la puesta en escena. El archivo de trabajo cambia, pero el índice permanece anterior.
  13. Sin volver a montar, que apoyando ¿La línea sería un registro de confirmación normal?
  14. Registra la línea preparada, no la edición de trabajo posterior.
  15. El estado corto muestra dos diferentes comparaciones para el mismo camino.
  16. Aquí, A es la adición por etapas; m es la modificación de trabajo posterior.
  17. Leer el archivo preparado directamente del índice.
  18. El índice todavía contiene la línea de apoyo anterior.
  19. La diferencia ordinaria compara el funcionamiento archivo con su versión preparada.
  20. Antes de la primera confirmación, el caché El resumen describe el nuevo archivo preparado.
  21. Ahora inspecciona el mismo estado. en una grabación GitTree real.
  22. Abrir Mostrar cambios de trabajo a través de la paleta de comandos.
  23. La fila sin etapas muestra el más nuevo edición de trabajo contra el índice.
  24. La fila por etapas muestra lo anterior. archivo preparado para la primera confirmación.
  25. Una ruta puede aparecer en ambas listas. sin crear dos archivos físicos.
  26. Leer cualquiera de las comparaciones no organizar, eliminar o descartar contenido.
  27. Una confirmación normal registra el índice. y avanza la sucursal local.
  28. El sujeto grabado confirma El primer compromiso de héroe existe.
  29. El espacio protagonista importa: sólo el La comparación de trabajo aún difiere.
  30. Una diferencia en caché vacía significa que El índice coincide con el historial de esta ruta.
  31. La diferencia de trabajo todavía contiene la edición más reciente. No se perdió nada.
  32. La historia ahora tiene un compromiso, mientras que el Queda la edición de trabajo deliberada.
  33. Cambiar la secuencia: poner en escena la archivo editado antes de enviarlo.
  34. Ahora se graba la línea más nueva y este camino no tiene ninguna diferencia restante.
  35. Ninguno de estos pasos locales sube cualquier cosa a un proveedor.
  36. Tu propia lección todavía termina sin repositorio; La inicialización viene a continuación.
  37. No descartes archivos ni restablezcas el historial sólo para hacer coincidir un ejemplo.
  38. Archivos de trabajo, contenido preparado. y el historial registrado puede diferir.
  39. Compruebe ambas secuencias y Explique las dos columnas de estado.
  40. A continuación, cree GitTree funciones dentro GitTree, luego prueba este modelo tú mismo.