2011-02-10 52 views
53

The official Git doc dice:¿Qué es un git "Snapshot"?

$ git diff test

Esto le mostrará lo que es diferente entre el directorio de trabajo actual y la instantánea en la rama 'prueba'

Como novato esto es muy confuso . Nunca he oído hablar del término instantánea. ¿Significan la "CABEZA" de la rama "prueba"?

+7

También puede apreciar [The Git Parable] (http://tom.preston-werner.com/2009/05/19/the-git-parable.html), que desarrolla la idea de Git en forma de historia , con una de las ideas centrales como instantáneas. – Cascabel

+1

Gracias tuve la misma pregunta. Mirando la parábola de Git, y en https://git-scm.com/book/en/v2/Getting-Started-Git-Basics, estoy entendiendo una "instantánea" como un duplicado completo de cada archivo cambiado en un directorio , además de punteros a todos los archivos sin cambios en ese mismo directorio. ¿Es eso correcto? – ouonomos

Respuesta

20

Una instantánea es el estado de algo (por ejemplo, una carpeta) en un punto específico en el tiempo. En este caso, instantánea significa el contenido actual de la rama de prueba, esta no tiene que ser la revisión principal.

+0

@jens: Instantánea se está utilizando aquí como sinónimo de laico para una confirmación. Un objeto de compromiso es esencialmente metadatos (autor, fecha, mensaje) y una instantánea de los contenidos de su árbol de trabajo (representado como un objeto de árbol). Ver [The Git Object Model] (http://book.git-scm.com/1_the_git_object_model.html) para más información. – Cascabel

+0

No puedo comentar directamente sobre el caso git, pero en el caso de SVN podría tener un par de cambios (sin compromiso, es decir, solo en su disco duro) en una rama y la versión troncal en otra carpeta; podrías diferenciar esos unos contra otros. Supongo que ese concepto también existe con git. – Femaref

+0

@jens: la otra pieza es que una rama es simplemente un puntero a una confirmación, por lo que cuando dices 'git diff test' realmente quieres decir" diff con la confirmación apuntada por la rama 'prueba' ". – Cascabel

2

En primer lugar, esa no es la documentación oficial de GIT. Es un libro escrito por la comunidad. Si bien es probable que tenga bastante autoridad, no es evangelio.

AFAIK, "instantánea" no tiene ningún significado formal en git. Ciertamente, el git diff manpage no lo menciona. En el contexto dado, es probablemente una referencia informal de cómo se usa la rama de "prueba" en los ejemplos dentro del libro, es decir, como una instantánea del trabajo en curso, para propósitos de prueba.

+0

la página de manual de git-stash menciona 'Para hacer rápidamente una instantánea, puede omitir tanto" guardar "como ' – Mike

35

El término instantánea se utiliza en el sitio de referencia git así

Es el término sustituto de "Revisión". En otros sistemas de control de versiones, los cambios en los archivos individuales se rastrean y se mencionan como revisiones, pero con git usted está rastreando todo el espacio de trabajo, por lo que usan el término instantánea para denotar la diferencia.

De http://gitref.org/index.html

En lugar de escribir una herramienta que las versiones de cada archivo de forma individual, como Subversion, probablemente escribir uno que hace que sea más fácil de almacenar instantáneas de nuestro proyecto sin tener que copiar todo el directorio cada vez .

Esto es esencialmente lo que es Git. Le dices a Git que quieres guardar una instantánea de tu proyecto con el comando git commit y básicamente registra un manifiesto de cómo son todos los archivos en tu proyecto en ese momento. Entonces, la mayoría de los comandos funcionan con esos manifiestos para ver cómo difieren o extraer contenido de ellos, etc.

Si piensa en Git como una herramienta para almacenar y comparar y combinar instantáneas de su proyecto, puede ser más fácil para entender qué está pasando y cómo hacer las cosas correctamente.

+0

y también quisiera señalar que puede obtener una 'instantánea' de un archivo individual en git haciendo 'git checkout ' como aparece en los ejemplos de git checkout https://www.kernel.org/pub/software/scm/git/docs/git-checkout.html#_examples – g19fanatic

+1

@Jens: mientras no puedas dividir la marca de verificación, puede volver a asignar si cree que otra respuesta es mejor que la respuesta actualmente aceptada. Pero, sí, más ACTUALIZACIONES, significa que la comunidad sintió que la respuesta es tan buena/valiosa. Además, eso no significa que deba ser aceptado. La respuesta aceptada es algo hasta el OP. – smRaj

1

Según tengo entendido, una instantánea en general es solo la "entidad" que git usa para almacenar sus datos. A diferencia de almacenar sus datos como una serie de "deltas"/conjuntos de cambios como SVN, por ejemplo, cada compromiso que usted hace a git crea un "objeto de confirmación" que hace referencia a una instantánea de cómo era el código en ese momento. .

Así como dice @Femaref, es el estado del código en un momento específico y no necesariamente significa que es el jefe de la rama de prueba, pero podría estar en el ejemplo que viste.

-1

siguientes son algunos de los contextos en los que se utiliza el término instantánea:

  1. alguien envía una nueva creada por tomar una instantánea del Índice.
  2. Una confirmación es una instantánea del repositorio en un momento dado.
+0

usaste el término para responder a tu pregunta, pero la pregunta fue directamente preguntando qué es una instantánea de git. –

2

La instantánea está en un repositorio como captura de pantalla de un video.

repositorio Git consiste en una serie de instantáneas , que son un montón de archivos y carpetas representados por objeto árbol de un Git, almacenados en la carpeta del repositorio .git. Cuando commit, almacena su directorio de trabajo actual como una nueva instantánea (cometa).

Cuestiones relacionadas