it-swarm-es.com

¿Qué significa 'etapa' en git?

Me resulta difícil entender a git, ya que no pude encontrar el significado de las palabras utilizadas para las acciones. He revisado el diccionario para ver el significado de 'etapa' y ninguno de los significados estaba relacionado con los conceptos de control de fuente.

¿Qué significa 'etapa' en el contexto de git?

352
000

Para etapa un archivo es simplemente prepararlo finamente para una confirmación. Git, con su índice, le permite confirmar solo ciertas partes de los cambios que ha realizado desde la última confirmación. Supongamos que está trabajando en dos funciones: una está terminada y otra aún necesita trabajo. Le gustaría hacer una confirmación e irse a casa (¡5 en punto, finalmente!) Pero no le gustaría confirmar las partes de la segunda función, que aún no se ha hecho. Escenifica las partes que sabes que pertenecen a la primera característica y confirma. Ahora su commit es su proyecto con la primera función realizada, mientras que la segunda aún está en proceso de trabajo en su directorio de trabajo.

331
Rook

Como todos hasta ahora lo han respondido de manera "formal", permítanme hacer esto con alternativas para mejorar el aprendizaje con el poder de las metáforas.

Entonces el área de ensayo es como:

  • un caché de archivos que desea confirmar
  • no una serie de tubos, sino un camión volquete, listo para mover el trabajo con el que lo carga, al depósito
  • un lugar mágico donde los archivos seleccionados se convertirán en piedra con su hechicería y se pueden transportar mágicamente al repositorio a su antojo
  • el camino de ladrillos amarillos para que los archivos vayan felices al repositorio (o se caigan si quieres revertirlos)
  • el lugar ficticio en el puerto marítimo donde los archivos se reciben un par de zapatos de cemento y luego se arrojan al mar del repositorio
  • en el mostrador de recepción de la biblioteca, coloca los archivos allí para que el bibliotecario se prepare para archivar en la biblioteca
  • una caja donde pones cosas antes de meterla debajo de tu cama, donde tu cama es un depósito de cajas que previamente has metido
  • la bahía de carga de archivos antes de que entre en el almacén del repositorio con el cargador de energía
  • el filtro de una cafetera eléctrica por goteo, si los archivos son como el café en polvo, entonces los archivos comprometidos son el café preparado
  • la oficina de Scrooge McDuck al lado de la bóveda, los archivos son como las monedas antes de que entren en la bóveda de su enorme Money Bin
  • la tienda de mascotas, una vez que traes una mascota a casa estás comprometido

Es mágico!

146
Spoike

La puesta en escena es un paso antes del proceso de confirmación en git. Es decir, una confirmación en git se realiza en dos pasos: puesta en escena y confirmación real.

Mientras un conjunto de cambios esté en el área de preparación, git le permite editarlo a su gusto (reemplace los archivos almacenados con otras versiones de los archivos almacenados, elimine los cambios de la preparación, etc.).

Tiempo de metáfora rota:

Considere un escenario en el que llama a los motores para llevar sus cosas de su antiguo departamento a su nuevo departamento. Antes de hacer eso, revisarás tus cosas, decidirás qué llevar contigo y qué tiras, lo empacarás en bolsas y lo dejarás en el pasillo principal. Los motores simplemente vienen, sacan las bolsas (ya empacadas) del pasillo y las transportan. En este ejemplo, todo hasta que los motores obtengan sus cosas, se está organizando: usted decide qué va a dónde, cómo empacarlo, etc. de puesta en escena).

Desde un punto de vista técnico, la puesta en escena también admite confirmaciones transaccionales, al dividir todas las operaciones en lo que puede fallar (puesta en escena) y lo que no puede fallar (confirmación):

El commit en git se implementa transaccionalmente, después de que la puesta en escena es exitosa. Varios pasos en la puesta en escena pueden fallar (por ejemplo, necesita confirmar, pero su HDD está 99.9999% lleno, y git no tiene espacio para realizar una confirmación). Esto fallará en la preparación (su depósito no será dañado por una confirmación parcial) y el proceso de preparación no afecta su historial de confirmación (no corrompe su depósito en caso de error).

38
utnapistim

Preparar un archivo es prepararlo para una confirmación. Debido a que git expone esta acción al control de los usuarios, le permite crear confirmaciones parciales o modificar un archivo, organizarlo, modificarlo nuevamente y solo confirmar o volver a la modificación original.

La estadificación le permite un control más preciso sobre exactamente cómo desea abordar el control de versiones.

26
Josh K

Para agregar a las otras excelentes respuestas, aquí es de donde viene el nombre de "etapa":

Revisé el diccionario para ver el significado de etapa y ninguno de los significados estaba relacionado con los conceptos de control de fuente.

En inglés, "representar" puede significar

organizar y participar en (un evento público): simpatizantes de UDF organizaron una manifestación en Sofía

(de http://oxforddictionaries.com/definition/stage )

El nombre "puesta en escena" para la característica git deriva de este significado: Al poner en escena, está preparando y organizando una confirmación. Por supuesto, un commit no es lo mismo que una actuación, pero es un evento importante en un VCS :-).

21
sleske

Con la mayoría de los otros sistemas de control de versiones, hay 2 lugares para almacenar datos: su copia de trabajo (las carpetas/archivos que está utilizando actualmente) y el almacén de datos (donde el control de versiones decide cómo empacar y almacenar sus cambios). En Git hay una tercera opción: el área de preparación (o índice). Básicamente es un muelle de carga donde puedes determinar qué cambios se envían.

fuente: http://gitready.com/beginner/2009/01/18/the-staging-area.html

5
Mostafiz Rahman

La "etapa" es un paso intermedio técnicamente necesario en el proceso de registrar un archivo, es decir, recopilar los cambios que se agregarán al repositorio. Los autores de Git decidieron hacer este paso visible y persistente donde otros VCS lo hacen una parte transitoria del proceso de confirmación. Entonces, es solo una opción que git te da porque puede, ¿por qué no?

A mi modo de ver, lo principal que el "escenario" de git te da que otros VCS no tienen es que puedes usarlo para revisar un archivo. Es efectivamente un compromiso local sin nombre y sin comentarios que le da un paso intermedio entre terminar con todo su trabajo y comprometerlo en el repositorio permanentemente y no tener nada guardado en su repositorio local.

Por ejemplo, supongamos que tiene una función parcialmente terminada. Está en un estado estable, pasa todas las pruebas y podría entrar en producción, pero tiene más trabajo por hacer. Podría organizar todos sus cambios y luego continuar trabajando en la función.

Más adelante, tendrá la opción de confirmar lo que organizó (y empujar esa confirmación al repositorio remoto) o agregar sus nuevos cambios a su área de preparación y luego confirmar todo de una vez, o deshacer solo sus nuevos cambios y revierta su directorio de trabajo al estado en que estaba cuando organizó sus cambios.

Es completamente posible omitir prácticamente el área de preparación por completo y solo usar el -a opción a git commit si no encuentra el área de preparación como un concepto útil. Mucha gente se salta la puesta en escena y las herramientas GUI generalmente también permiten esto.

2
Old Pro