¿Qué es una rama de tema git?

137

¿Qué es una rama de tema git? ¿Se diferencia de una rama ordinaria de alguna manera? ¿Hay ramas que no sean ramas temáticas?

skiphoppy
fuente

Respuestas:

114

Las ramas temáticas suelen ser ramas ligeras que creas localmente y que tienen un nombre que es significativo para ti . Es donde podría trabajar para una corrección de errores o característica (también se llaman ramas de características) que se espera que tarde un tiempo en completarse.

Otro tipo de rama es la "rama remota" o "rama de seguimiento remoto". Este tipo de rama sigue el desarrollo del trabajo de otra persona y se almacena en su propio repositorio. Actualiza periódicamente esta rama (usando git fetch) para rastrear lo que está sucediendo en otros lugares. Cuando esté listo para ponerse al día con los cambios de todos los demás, lo usaría git pulltanto para buscar como para combinar.

También he visto otro tipo de rama que es esencialmente un árbol de archivos completamente separado en el mismo repositorio. Por ejemplo, el repositorio de Git contiene cabezas denominadas man y html que contienen contenido completamente diferente de la rama maestra . No sé cómo se suele llamar a este tipo de ramas.

Greg Hewgill
fuente
66
Yo estaba buscando la manera de tener dos ramas sin un ancestro común cometió y encontré esto: madduck.net/blog/...
Nicolas
1
Wrt el árbol independiente, creo que a veces se llaman una rama huérfano, similar a la forma en Github recomienda que crea una página de GitHub manualmente
max
1
¿Por qué dice que una rama temática tiene que ser local? No hay razón para pensar que tal vez no quieras empujar una rama temática. Y, de manera similar, otros desarrolladores pueden crear sus propias ramas temáticas y es posible que desee extraerlas. Esta respuesta parece confundir dos propiedades totalmente no relacionadas de las ramas: si una rama es local o no, no está relacionada en absoluto con si es una rama temática.
Jean-Paul Calderone
@ Jean-PaulCalderone: No creo haber dicho que las ramas temáticas tienen que ser locales. Puede realizar un seguimiento remoto de una rama temática, por supuesto, si hay más de un desarrollador trabajando en ella.
Greg Hewgill
2
Creo que la respuesta lo implica. ¿Por qué es "... que creas localmente ..." y "... tienes un nombre que es significativo para ti"? ¿Una parte intrínseca de lo que constituye una "rama temática"? La primera oración de su respuesta sugiere fuertemente que estas son características importantes de una rama temática, pero en realidad son ambas ortogonales a la "temática" de una rama o no. El siguiente párrafo donde describe "ramas remotas" vuelve a informar la idea de que la parte "creada localmente" de una rama temática es importante. Sugiero reenfocar esta respuesta para quitar el énfasis a estos rasgos de rama no relacionados.
Jean-Paul Calderone
81

No es un término técnico; solo se refiere a una rama que se creó para implementar una característica específica o corregir un error. El "tema" es la razón de la creación de la rama, esencialmente.

mipadi
fuente
2
Sí. a diferencia de una rama personal, donde tienes ramas: bob, alice, mat, etc.
webmat
... así que la rama temática y la rama característica son las mismas cosas, ¿correcto?
Betlista
@Betlista Más o menos, sí.
mipadi
28

https://github.com/dchelimsky/rspec/wiki/Topic-Branches explica esto bien:

Una rama de "tema" es una rama separada que se usa cuando se trabaja en un solo "tema" (una corrección de errores, una nueva característica o una idea experimental). Se recomienda trabajar en una rama de tema en lugar de directamente encima de "maestro" porque:

{... visite el enlace ...}

Por lo tanto, por todas estas razones, se recomienda utilizar una rama temática para preparar presentaciones, incluso para contribuciones simples como correcciones de errores de confirmación única y similares.

Esta muestra también da ejemplos. Lo que realmente me hizo pensar, esto es probablemente lo que la mayoría de las tiendas ya hacen. Todos los proyectos ágiles con los que he estado hacen. Voté "No es un término técnico" porque siento que esto da en el clavo.

Jeff Ancel
fuente
4

parece que el tipo de ramas más prominentes e importantes que no son ramas temáticas serían las ramas de lanzamiento en un repositorio principal disponible públicamente, ¿verdad?

Probablemente sea adecuado para usted, pero se trata de usted y del proyecto en el que está pensando; no está determinado por Git.

La mayoría de los sistemas de control de versiones (particularmente los centralizados) prescriben o imponen un flujo de trabajo particular, incluido para qué tiene sentido usar una rama. Git (y en cierta medida la mayoría de los VCS distribuidos) considera que el flujo de trabajo, para qué ramas se utilizan, cuándo comprometerse, para qué diferentes repositorios se utilizan, etc., todo es elegido por los usuarios y los acuerdos entre los usuarios (políticas). Entonces Git no aplica esto técnicamente.

Esta es una de las cosas que me dificultó aprender a Git. Oliver Steele explicó esto desde la vista del usuario, escribiendo sobre Políticas de compromiso .

Pablo
fuente