Encuentro a git difícil de entender porque no pude encontrar el significado de las palabras usadas para las acciones. Revisé el diccionario en busca del 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?
Comentarios
Responder
Para preparar un archivo es simplemente prepararlo finamente para un compromiso. Git, con su índice, le permite confirmar solo ciertas partes de los cambios que ha realizado desde la última confirmación. Digamos que está trabajando en dos funciones: una está terminada y la otra aún necesita algo de trabajo. Le gustaría hacer un compromiso e irse a casa (¡finalmente a las 5 en punto!), Pero no le gustaría confirmar las partes de la segunda función, que aún no está terminada. Coloca las partes que sabe que pertenecen a la primera característica y compromiso. Ahora su compromiso es su proyecto con la primera característica hecha, mientras que la segunda todavía está en proceso en su directorio de trabajo.
Comentarios
- Buena explicación. Tenga en cuenta que git, al estar distribuido, obviamente le permite confirmar ambas características, ya que las confirmaciones son locales (al principio). Aún así, es posible que desee dividir las modificaciones en una confirmación por función, y de nuevo la preparación es útil.
- No ‘ No entiendo por qué necesitas una puesta en escena para esto. Puedo hacer esto con HG o incluso SVN enviando solo los archivos relevantes. Parece que esta función está diseñada principalmente para ayudar a las personas que insisten en trabajar con la línea de comando donde ‘ s más duro t o marque las casillas de lo que está confirmando.
- @jiggy git le permite organizar parte de un archivo. También puede preparar un archivo, realizar más modificaciones y luego confirmar el estado en el que se encontraba durante la preparación. Puedes ‘ hacer eso en subversion.
- @jiggy En SVN, hay algo entre el momento en que seleccionas qué archivos / partes de archivos enviar y cuando termine de escribir su mensaje de confirmación, eso registra qué archivos / partes seleccionó para confirmar. Es posible que nunca se mencione explícitamente, podría implementarse en el cliente SVN en lugar de una parte real del repositorio, podrían ser solo algunos indicadores en la memoria, pero eso es SVN ‘ s etapa. No he ‘ t miré a HG, pero sospecho que hace lo mismo. La diferencia con git es que git reconoce que es una cosa, la graba en el disco y permite que el usuario acceda a ella directamente.
- La segunda flecha » Los archivos de escenario » en la figura pueden ser engañosos. » stage hunks » ¿podría ser más preciso?
Respuesta
Dado que hasta ahora todo el mundo lo ha respondido de la manera «formal», permítanme hacer esto con alternativas para mejorar el aprendizaje con el poder de las metáforas.
Entonces el área de preparación es como:
- un caché de archivos que desea confirmar
- no una serie de tubos, pero en realidad un camión volquete, listo para mover el trabajo con el que lo carga, al repositorio
- 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 felizmente al repositorio (o se caigan si desea revertir)
- 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
- el escritorio de recepciones en la biblioteca, usted pone los archivos allí para que el bibliotecario los prepare para archivarlos en la biblioteca
- una caja donde pones las cosas antes de meterla debajo de tu cama, donde tu cama es un depósito de cajas que has metido previamente
- la bahía de carga de archivos antes de que entre en el depósito del depósito con el cargador de energía
- el filtro de una cafetera eléctrica de 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 papelera
- la tienda de mascotas, una vez que traes una mascota a casa, estás comprometido
Es mágico !
Comentarios
- Me encantan las analogías ; camino a seguir bud ^ _ ^
- Me encanta la analogía final.
- Esta respuesta fue » DESESPERADAMENTE » necesario entre el espacio de intentos comunes de explicar la metafísica de la puesta en escena git index = git. Francamente, ‘ también me gustaría saber qué estaba pensando Linus cuando decidió que quería un área de índice. Me gusta, pero simplemente quiero apreciar mejor por qué ‘ es bueno tenerlo y cómo usarlo de la manera más eficaz.
Respuesta
La preparación es un paso antes del proceso de confirmación en git. Es decir, una confirmación en git se realiza en dos pasos: preparación y confirmación real.
Siempre que haya un conjunto de cambios en el área de preparación, git le permite editarlo como desee (reemplace los archivos preparados por otras versiones de archivos en etapas, eliminar cambios de la etapa de pruebas, etc.).
Tiempo de metáfora rota:
Considere un escenario en el que llama a la mudanza para llevar sus cosas de su antiguo apartamento a su nuevo apartamento. Antes de hacer eso, revisará sus cosas, decidirá lo que lleva y lo que tira, lo empacará en bolsas y lo dejará en el pasillo principal. Los trabajadores de la mudanza simplemente vienen, toman las bolsas (ya empacadas) del pasillo y las transportan. En este ejemplo, todo hasta que las empresas de mudanzas obtengan sus cosas es una puesta en escena: usted decide qué va a dónde, cómo empacarlo, etc. (por ejemplo, puede decidir que la mitad de sus cosas se desecharán antes de que las empresas de mudanza lleguen allí, eso » s parte de la 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):
La confirmación en git se implementa transaccionalmente, después de que la preparación sea exitosa. Varios pasos en la preparación pueden fallar (por ejemplo, necesita confirmar, pero su HDD está lleno al 99,9999% y git no tiene espacio para realizar una confirmación). Esto fallará en la preparación (su repositorio 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 repositorio en caso de un error).
Comentarios
- … y tan pocos votos hasta ahora.
Responder
Poner en escena 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, prepararlo, modificarlo de nuevo y solo confirmar o revertir a la modificación original.
La preparación le permite control más preciso sobre exactamente cómo desea abordar el control de versiones.
Respuesta
Para agregar a las otras excelentes respuestas, aquí «s de donde proviene el nombre de» etapa «:
Revisé el diccionario para ver el significado de etapa y ninguno de los significados estaba relacionado con conceptos de control de fuente.
En inglés, «to stage» puede significar
organizar y participar en (un evento público): Partidarios de UDF realizó una demostración en Sofía
(de http://oxforddictionaries.com/definition/stage )
El nombre «puesta en escena» de la función de git deriva de este significado: cuando está preparando, está preparando y organizando una confirmación.Por supuesto, una confirmación no es lo mismo que una actuación, pero es un evento importante en un VCS :-).
Comentarios
- Yo ‘ hubiera pensado que coincidía más con el uso en la publicación provisional
- Ditto. Además, » un punto, período o paso en un proceso o desarrollo. »
- También ‘ servidor intermedio ‘ es un término bastante común que se utiliza para describir un servidor que ‘ se encuentra entre el desarrollo y producción.
Respuesta
La «etapa» es un paso intermedio técnicamente requerido en el proceso de verificación en un archivo, es decir, recopilar los cambios que se agregarán al repositorio. Los autores de Git eligieron hacer que este paso sea visible y persistente donde otros VCS lo convierten en una parte transitoria del proceso de confirmación. Así que es solo una opción que git le brinda porque puede hacerlo, ¿por qué no?
A mi modo de ver, lo principal que te da la «etapa» de git que otros VCS no hacen es que puedes usarlo para controlar un archivo. Es efectivamente una confirmación local sin nombre y sin comentarios que te da un paso intermedio entre terminar con todo su trabajo y enviarlo al repositorio de forma permanente y no tener nada guardado en su repositorio local.
Por ejemplo, digamos 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 que hacer en ella. Podrías organizar todos tus cambios y luego continuar trabajando en la función.
Más tarde, tendrás la opción de confirmar lo que preparaste (y enviar ese compromiso al repositorio remoto) o agregar tu nuevos cambios en su área de preparación y luego confirme todos a la vez, o para deshacer solo sus nuevos cambios y revertir su directorio de trabajo al estado en el que estaba cuando organizó sus cambios.
Es completamente posible para omitir prácticamente el área de preparación por completo y simplemente use la opción -a
para 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 de GUI también suelen permitir esto.
Comentarios
- » other VCS don ‘ t » – ¿Qué te hace pensar eso? La estantería en Perforce parece estar funcionando lo que describe, e incluso con algunos detalles adicionales
- @gnat sí, por supuesto muchos otros VCS le ofrecen algo parecido a la puesta en escena. Por » otros VCS » me refiero a otros VCS que no ‘ no tienen algo como git ‘ s, ya que eso es a lo que se refería el OP.
- Encontré que esta respuesta es inmensamente mejor que todas las anteriores, ya que ‘ es el único que aclara por qué existe el Staging (siendo técnicamente requerido ), una explicación de su origen ( Git ‘ s los autores eligieron hacer este paso visible y persistente ), agregando lo que personalmente encuentro una buena definición para él ( un compromiso local intermedio, sin nombre y sin comentarios ) . Sin embargo, creo que podría mejorarse citando una fuente para la declaración sobre el origen de la puesta en escena y explicando un poco más por qué ‘ es técnicamente requerido . @OldPro
- Si git estuviera siendo diseñado desde cero, esto podría haber sido solo parte de una » rama » generalizada concepto, local e invisible para otros en este caso. Del mismo modo, » stash » podría haberse implementado (¡y entendido!) Como una instancia específica del concepto generalizado de » branch. » Entonces podrías tener cualquier cantidad de niveles de » staging » que prefiera.
Responder
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á usando actualmente) y el almacén de datos (donde el control de versiones decide cómo empaquetar y almacenar sus cambios). En Git hay una tercera opción: el área de preparación (o índice). Es básicamente un muelle de carga donde puedes determinar qué cambios se envían.
fuente: http://gitready.com/beginner/2009/01/18/the-staging-area.html
Comentarios
- esto no ‘ no parece agregar nada sustancial sobre las 6 respuestas anteriores
- Menciona Index. Y referencias a un artículo muy completo. Voto a favor. Por cierto, algunas de las respuestas anteriores son simplemente bromas.
Respuesta
Supongo que estoy desarrollando la función de inicio de sesión y que necesito 5 pasos consecutivos para completar. Así que aquí la puesta en escena te ayudará a trabajar en pasos como
hecho con el paso 1.
hecho con el paso 2, ahora el paso 1 y el paso 2 son correctos.
lío con el paso 3 no comprobación del problema último paso por etapas que es el paso 2 de la misma manera una vez que haya terminado con los 5 pasos, lo que significa que la función está completa, ahora realice la confirmación.
Comentarios
- Esto no ‘ parece agregar algo sustancial sobre los puntos hechos y explicados anteriormente. 9 respuestas
- sí, tienes razón, solo traté de hacer la explicación simple y dulce
- Y cómo me siento al usar este concepto prácticamente, traté de explicar eso
- considere echar un vistazo a la discusión aquí: ¿Son aceptables las segundas respuestas TL; DR? (FWIW en comparación con las respuestas anteriores, esta no ‘ no me parece simple ni dulce)
- gracias señor, tengo una pregunta que hacer. Me he encontrado con muchas respuestas y la mayoría de ellas son demasiado complejas, sí, son correctas pero difíciles de digerir a la vez, creo que si no puedes ‘ explicar algo de forma sencilla, entonces no lo he aprendido correctamente o no ‘ no sé cómo usarlo. Entonces, ¿es malo ahora poner un resumen o una forma simple de responder?
git add file.ext
para un archivo específico ogit add .
para afectar a todos los archivos modificados y sin seguimiento. Se dice que los archivos que se han agregado de esta manera están » en etapas » y se incluirán en el próximo » confirmar «. La confirmación es una instantánea de su trabajo creado, p. Ej. congit commit -m "I wrote something"
.