Pregunta

Parece que hay una diferencia entre la última confirmación, la cabeza y el estado del archivo que puedo ver en mi directorio.

¿Cuál es el jefe, ¿qué puedo hacer con él y qué error se debe evitar?

¿Fue útil?

Solución

La cabeza es una referencia a la última confirmación en la rama actualmente desprotegido.


Hay una pequeña excepción a esta, que es la cabeza separada. Un cabeza separada es la situación al final en cada vez que se desprotege un comprometerse (o etiqueta) en lugar de una rama. En este caso, hay que imaginar esto como un rama temporal sin nombre; así que en vez de tener una referencia rama llamada, que solamente tenemos CABEZA. Todavía le permitirá hacer commit (que se actualizará HEAD), por lo que la anterior definición corta sigue siendo cierto si se piensa en una cabeza separada como una rama temporal sin un nombre.

Otros consejos

HEAD es un ref (referencia) a la actualmente desprotegido comprometerse.

En los estados normales, en realidad es una referencia simbólica a la rama de haber efectuado su salida - si nos fijamos en el contenido de .git / HEAD verá algo así como "ref: refs / heads / master". La rama en sí es una referencia a la comprometen en la punta de la rama. Por lo tanto, en el estado normal, HEAD se refiere efectivamente a la comprometen en la punta de la rama actual.

También es posible tener una "cabeza separada". Esto sucede cuando se echa un vistazo a algo más que una rama (local), como una rama remota, una específica cometan, o una etiqueta. El lugar más común de ver esto es durante una rebase interactivo, cuando se decide editar un commit. En el estado de cabeza separada, la cabeza es una referencia directa a un commit - los contenidos de .git / HEAD será un hash SHA1

.

En términos generales, la cabeza es sólo un nombre conveniente para significar "lo que ha desprotegido" y que en realidad no tiene que preocuparse mucho al respecto. Acaba de ser conscientes de lo que ha realizado el pedido, y recuerde que es probable que no quiere comprometerse si no está en una rama (estado cabeza separada) a menos que sepa lo que está haciendo (por ejemplo, se encuentran en un rebase interactivo) .

puntero HEAD en Git

Git mantiene una variable de referencia denominado HEAD. Y llamamos a esta variable un puntero, ya que su propósito es de referencia, o punto a, una específica comprometerse en el repositorio. A medida que hacemos nuevos compromete el puntero va a cambiar o mover a punto de cometer un nuevo. CABEZA siempre apunta a la punta de la rama actual en nuestro repositorio. Ahora, esto tiene que ver con nuestro repositorio, no nuestro índice de puesta en escena, o nuestro directorio de trabajo.

Otra forma de pensar de la misma es el último estado de nuestro repositorio o lo que se obtuvo la copia, y porque es donde el repositorio fue apagado o el último estado, también se puede decir que los puntos de la cabeza a los padres de la siguiente cometer o que es donde se cometen la escritura va a tener lugar.

Creo que una buena metáfora para pensar en esto es la reproducción y grabación de cabeza en un grabador de cinta de cassette. En el comienzo de la grabación de audio, la cinta se mueve más allá de la cabeza, y registra en la misma. cuando pulse Detener el lugar donde se detuvo cabezal de grabación que es el lugar que va a empezar a grabar de nuevo cuando apretamos grabar un segundo time.Now podemos moverse, podemos mover la cabeza a los diferentes lugares, pero siempre que la cabeza se coloca cuando alcanzan récord una vez más que es donde se va a iniciar la grabación.

El puntero HEAD en Git es muy similar, se señala en el lugar donde vamos a empezar a grabar la próxima. Es el lugar donde lo dejamos en nuestro repositorio para las cosas que nos hemos comprometido.

Esto debería haber sido un comentario, pero es demasiado largo para un commit

Siempre pensé medios HEAD~5 ir a 5 commit antes. Pero no lleva la parte del comando GO. Sólo lleva la referencia / 'dónde' parte del comando.

En términos simples se utiliza para responder a la pregunta de: donde debería ir? Para que practican?

Si usted dice

medios HEAD (la referencia a la) corriente cometer

medios HEAD~1 (la referencia a) 1 cometen antes

medios HEAD~87 (la referencia a) 87 confirmaciones antes

git checkout HEAD~1 realidad irán a esa referencia / commit

En términos simples, la cabeza es una referencia a la última confirmación en la rama de salida actualmente.

Piense en la cabeza como la "rama actual". Cuando se cambia ramas con git checkout, la revisión HEAD cambia a punto a la punta de la nueva sucursal.

Se puede ver lo CABEZA puntos que haciendo:

cat .git/HEAD

Es posible para la cabeza para referirse a una revisión específica que no está asociado con un nombre de la sucursal. Esta situación se denomina una cabeza separada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top