2011-11-19 42 views
119

Mientras estoy aprendiendo sobre git, sigo encontrando los términos HEAD, master, origin, y no estoy seguro de cuáles son las diferencias. Si entiendo correctamente, HEAD siempre es igual a la última revisión. Y si es así, ¿es esa la última revisión de todo el repositorio, o de una rama o etiqueta específica? Esto es muy confuso He leído muchos tutoriales sobre esto y cosas como ramificación/fusión, pero todavía no puedo entenderlo.¿Cuáles son los conceptos de git de HEAD, master, origin?

Respuesta

154

Recomiendo encarecidamente el libro "Pro Git" by Scott Chacon. Tómese el tiempo y léalo realmente, mientras explora un repositorio de git real como lo hace.

HEAD: el commit actual de su repositorio está activado. La mayoría de las veces HEAD apunta a la última confirmación en su sucursal, pero ese no tiene que ser el caso. HEAD realmente solo significa "a qué apunta mi repositorio actualmente".

En el caso de que la confirmación HEAD se refiera a que no es la punta de ninguna rama, esto se denomina "cabeza desprendida".

master: nombre de la rama predeterminada que git crea para usted cuando crea por primera vez un repositorio. En la mayoría de los casos, "maestro" significa "la rama principal". La mayoría de las tiendas tienen a todos empujando para dominar, y el maestro se considera la vista definitiva del repositorio. Pero también es común que las ramas de lanzamiento se hagan fuera de master para su lanzamiento. Su repositorio local tiene su propia rama principal, que casi siempre sigue al maestro de un repositorio remoto.

origen: el nombre predeterminado que da git a su repositorio remoto principal. Tu caja tiene su propio repositorio, y lo más probable es que lo envíes a un repositorio remoto al que tú y todos tus compañeros de trabajo presiona. Ese repositorio remoto casi siempre se llama origen, pero no tiene que ser así.

HEAD es una noción oficial en git. HEAD siempre tiene un significado bien definido. master y origin son nombres comunes generalmente utilizados en git, pero no tienen que serlo.

+0

¿Qué quiere decir con "HEAD realmente solo significa" qué es lo que mi repositorio actualmente apunta a "." Si hay múltiples ramas en un repositorio, ¿cuál es la CABEZA de acuerdo a usted? si hay 3 ramas (junto con el maestro), y se realizó una confirmación de necesidad en branchA, HEAD aún puede estar en la confirmación del 'maestro'. Entonces, ¿cuál es la revisión que apunta el repositorio ahora? – OK999

31

HEAD no es la última revisión, es el actual revisión. Por lo general, es la última revisión de la rama actual, pero no tiene que ser así.

master es un nombre comúnmente dado a la rama principal, pero podría llamarse cualquier otra cosa (o no podría haber una rama principal).

origin es un nombre comúnmente dado al control remoto principal. remote es otro repositorio del que puede extraer y presionar. Por lo general, está en algún servidor, como github.

+0

¿Puedes dar un ejemplo de cuándo HEAD es actual pero no lo es más? Nunca había visto eso antes. ¿O quiere decir que podría no ser la última porque su sucursal está detrás de la rama remota que está rastreando? –

+9

@MattGreer: Si revisa algo más antiguo (como una etiqueta como 'git checkout v1.1'), su HEAD cambiará a la confirmación de esa etiqueta. Puede que no sea el último compromiso. –

10

Si bien esto no responde directamente a la pregunta, hay un gran libro disponible de forma gratuita que lo ayudará a aprender los conceptos básicos llamados ProGit. Si prefiere la versión de madera muerta a una colección de bits, puede comprarla en Amazon.

+3

Si bien este enlace puede responder a la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. – nha

Cuestiones relacionadas