Pregunta

Estoy teniendo algunas dificultades para la comprensión de cómo utilizar la etiquetas frente a ramas en .

Me cambié de la versión actual de nuestro código de a , y ahora voy a estar trabajando en un subconjunto de ese código para una determinada característica.Un par de otros desarrolladores van a estar trabajando en esto también, pero no todos los desarrolladores en nuestro grupo se va a preocupar de esta característica.Debo ser la creación de una sucursal o una etiqueta?En qué situaciones debo usar uno contra el otro?

¿Fue útil?

Solución

Un etiqueta representa una versión de una rama particular en un momento en el tiempo.Un rama representa un subproceso independiente de desarrollo que se puede ejecutar simultáneamente con otros esfuerzos en el desarrollo de la misma base de código.Los cambios de una rama, finalmente, puede ser incluido de nuevo en otra rama para unificarlos.

Por lo general vas a etiqueta una versión particular de modo que usted puede volver a ella, por ejemplo, esta es la versión que se entregan a XYZ Corp.Un rama es más de una estrategia para proporcionar actualizaciones en una particular versión de el código mientras continúa para hacer el desarrollo en ella.Usted va a hacer una rama de la entrega de la versión, continuar con el desarrollo en la línea principal, pero hacer correcciones a la rama que representa la entrega de la versión.Finalmente, tendrás la combinación de estas correcciones de errores de nuevo en la línea principal.A menudo vamos a usar tanto de ramificación y etiquetado juntos.Tendrás varias etiquetas que se pueden aplicar tanto a la línea principal y sus ramas marca en particular versiones (aquellos que se entrega a los clientes, por ejemplo) a lo largo de cada rama que desea recrear -- para la entrega, error de diagnóstico, etc.

En realidad es más complicado que esto, o tan complicado como usted quiere hacer, pero estos ejemplos debe darle una idea de las diferencias.

Otros consejos

A partir de la teórico punto de vista:

  • etiquetas son nombres simbólicos para un determinado revisión.Que siempre apuntan al mismo objeto (por lo general:a la misma revisión);ellos no cambian.
  • ramas son nombres simbólicos para línea de desarrollo.Nuevo cometa se crean en la parte superior de la rama.La rama puntero, naturalmente, avances, apuntando a nuevos y más nuevos commits.

A partir de la técnica punto de vista:

  • etiquetas residir en refs/tags/ espacio de nombres, y puede apuntar a etiqueta de objetos (anotado y, opcionalmente, firmado con GPG etiquetas) o directamente a objeto de commit (menos utilizado ligero de etiquetas para nombres locales), o en casos muy raros, incluso a objeto de árbol o objeto blob (por ejemplo,Firma GPG).
  • ramas residir en refs/heads/ espacio de nombres, y puede apuntar sólo a objetos commit.El HEAD puntero debe referirse a una rama (referencia simbólica) o directamente a un commit (desprendimiento de la CABEZA o sin nombre de la rama).
  • remoto-seguimiento de las ramas residir en refs/remotes/<remote>/ espacio de nombres, y siga ordinario ramas en el repositorio remoto <remote>.

Ver también gitglossary manual:

rama

Una "rama" es una línea activa de desarrollo.El más reciente de comprometerse en una rama se conoce como la punta de la rama.La punta de la rama se hace referencia a una rama de la cabeza, que se mueve hacia adelante como un desarrollo adicional se realiza en la rama.Un único repositorio git puede realizar el seguimiento de un número arbitrario de las ramas, pero su árbol de trabajo está asociado con solo uno de ellos (el "actual" o "chequeo" de la rama), y la CABEZA de los puntos a esa rama.

etiqueta

Ref apuntando a una etiqueta o un objeto de commit.En contraste con una cabeza, una etiqueta no es cambiado por un commit.Etiquetas (no etiquetar los objetos) se almacenan en $GIT_DIR/refs/tags/.[...].Una etiqueta que se usa normalmente para marcar un punto en particular en la confirmación de ascendencia de la cadena.

etiqueta de objeto

Un objeto que contiene un ref que apunta a otro objeto, que puede contener un mensaje sólo como un objeto de commit.También puede contener una (PGP) de la firma, en cuyo caso se denomina un "firmado etiqueta de objeto".

Si usted piensa en su repositorio como un libro que narra el progreso en su proyecto ...

Ramas

Se puede pensar en una rama como una de esas pegajosas marcadores

introducir descripción de la imagen aquí

Un nuevo repositorio tiene sólo uno de ellos (llamado master), que se mueve automáticamente a la última página (piensa comprometerse ) que has escrito. Sin embargo, usted es libre de crear y utilizar más marcadores, con el fin de marcar otros puntos de interés en el libro, para que pueda volver rápidamente a ellos.

Además, siempre se puede mover un marcador particular, a alguna otra página del libro (usando git-reset, por ejemplo); típicamente puntos de interés varían con el tiempo.

Etiquetas

Se puede pensar en las etiquetas como capítulo encabezados .

marcadores

Puede contener un título (piensa etiquetas comentadas ) o no. Una etiqueta es similar pero diferente a una rama, ya que marca un punto de histórico interés en el libro. Para mantener su aspecto histórico, una vez que has compartido una etiqueta (es decir, la empujó a un compartida remota), que no se supone a moverlo a otro lugar en el libro.

Lo que hay que darse cuenta, que viene de CVS, es que ya no crea directorios cuando la creación de una rama.
No más "etiqueta pegajosa" (que se puede aplicar a un solo archivo), o "marca de la rama".
Branch y etiquetas son dos objetos diferentes en Git, y siempre se aplican a la todos de recompra.

Ya (con SVN este momento) no tendría que estructurar de forma explícita su repositorio con:

branches
   myFirstBranch
     myProject
       mySubDirs
   mySecondBranch
     ...
tags
   myFirstTag
     myProject
       mySubDirs
   mySecondTag
   ...

Esa estructura viene del hecho de CVS es un sistema de revisión y no con una versión del sistema (consulte Fuente de control frente al control de revisión? ).
Eso significa que las ramas se emulan a través de etiquetas para CVS, SVN para copias de directorio.

Su pregunta tiene sentidos si estás acostumbrado a la caja de una etiqueta, y empezar a trabajar en ella .
Lo cual no debe;)
Una etiqueta se supone que representa un inmutable contenido, utilizado sólo para acceder a ella con la garantía de obtener el mismo contenido cada vez.

En Git, la historia de las revisiones es una serie de confirmaciones, formando un gráfico.
Una rama es una ruta de ese gráfico

x--x--x--x--x # one branch
    \ 
     --y----y # another branch
       1.1
        ^
        |
        # a tag pointing to a commit
  • Si usted paga una etiqueta, tendrá que crear una rama para empezar a trabajar de la misma.
  • Si usted paga una rama, verá directamente la última cometerlo ( 'cabeza') de esa rama.

respuesta de Jakub Narębski para todos los aspectos técnicos, pero, francamente, en este punto, no es necesario (todavía) todos los detalles;)

El punto principal es: una etiqueta de ser un simple puntero a un compromiso, usted nunca será capaz de modificar su contenido. Es necesario una rama.


En su caso, cada desarrollador que trabaja en una característica específica:

  • debe crear su propia rama en sus respectivos repositorio
  • ramales de pista de los repositorios de su colega (el uno trabajando en la misma función)
  • tirando / empujando con el fin de compartir su trabajo con sus compañeros.

En lugar de seguir directamente las ramas de sus colegas, usted podría seguir solamente la rama de un repositorio central "oficial" para que todo el mundo empuja a su / su trabajo con el fin de integrar y compartir el trabajo de todos para esta función particular.

Las ramas son de madera y crecen desde el tronco del árbol. Las etiquetas son de papel (derivado de la madera) y cuelgan como adornos de navidad de varios lugares en el árbol.

Su proyecto es el árbol, y su característica que se agrega al proyecto crecerá en una rama. La respuesta es rama.

Parece que la mejor manera de explicar es que actúan como etiquetas de sólo lectura ramas. Se puede utilizar una rama como una etiqueta, pero puede actualizar sin darse cuenta que con las nuevas confirmaciones. Etiquetas están garantizados para apuntar a la misma comprometerse, siempre y cuando existan.

Las etiquetas pueden ser o bien con o sin signo ; ramas no están firmados.

etiquetas firmados no se pueden mover porque están obligados criptográficamente (con firma) a una confirmación en concreto. etiquetas sin firmar no están ligados y es posible moverlos (pero etiquetas en movimiento no es un caso de uso normal).

Las ramas no sólo se pueden mover a otra, pero cometen son esperada para hacerlo. Debe utilizar una rama para su proyecto de desarrollo local. No quedó claro en cometer el trabajo a un repositorio Git "en una etiqueta".

El Git Parábola explica cómo una DVCS típicos se crea y por qué sus creadores hicieron lo que hicieron. Además, es posible que desee echar un vistazo a Git para informático; que explica lo que cada tipo de objeto en Git hace, incluyendo las ramas y etiquetas.

Me gusta pensar en ramas como donde vas , etiquetas como dónde ha estado .

Una etiqueta se siente como un marcador de un punto importante en particular en el pasado, tal como una liberación de versión.

Mientras que una rama es un camino en particular el proyecto va abajo, y así el marcador rama avanza con usted. Cuando haya terminado de combinar / borrar la rama (es decir, el marcador). Por supuesto, en ese punto se puede optar por la etiqueta que cometió.

Una etiqueta se utiliza para marcar una versión, más específicamente, se hace referencia a un punto en el tiempo en una rama. Una rama se suele utilizar para añadir características a un proyecto.

simple:

  Se espera

Etiquetas para siempre apuntan en la misma versión de un proyecto, mientras que se espera que los jefes de avanzar a medida que avanza el desarrollo.

Git Manual del usuario

la respuesta simple es:

  

rama:   los actuales puntero se mueve con cada rama se comprometen al repositorio

y

  

etiqueta:. Realizar la confirmación que algunos puntos de la etiqueta no cambia, de hecho, la etiqueta es una instantánea de que cometen

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