2012-04-01 19 views
5

Personalmente, si miro el GIT o el repositorio de Linux con gitk, estoy totalmente abrumado por la enorme cantidad de fusiones/ramificado. No tengo ni idea de lo que está pasando.Git: ¿cómo puede GIT/Linux mantenedores mantienen tantas ramas

Supuse que, en general, intenta tener un historial lo más lineal posible y solo unas pocas ramas (por ejemplo, master, maint, next, pu - that it is) en el público repo. Es decir. Supuse que las fusiones son raras veces y en su mayoría se usa rebase. Aparentemente estoy equivocado.

  1. Me pregunto lo que los mantenedores git/Linux hacer para tener una buena visión fácil
  2. ¿Por qué no usar rebase más a menudo y tienen mucho más ramas que único maestro, maint, al lado de la PU?
+0

Las sucursales son baratas, por lo que se aprovechan a menudo :) – Nic

+0

En 2007 [Google Tech Talk] (https://www.youtube.com/watch?v=4XpnKHJAok8) Linus Torvalds da algunos ejemplos de cómo usa git , particularmente en kernel y git. – andrybak

Respuesta

3

Hay una cosa muy importante de entender en relación con Git y rebase.

Do not rebase commits that you have pushed to a public repository. 

Durante el tiempo que está trabajando en una fusión a nivel local puede utilizar rebase lo más a menudo como quiera, porque es local. Si te gusta un histroy lineal. En otras palabras, no verás el trabajo de rebase que hicieron.

La otra parte sobre el número de ramas es simplemente un tipo de experiencia y más que eso una cuestión de concepto. He hecho ramificaciones con más de 300 sucursales en paralelo ... que es solo un tipo que domestica a la bestia mediante el uso de convenciones y un buen concepto.

2

No soy un desarrollador del kernel, y ciertamente no se puede hablar de ellos. Here's una referencia en la que Linus habló un poco, que creo que responde a sus preguntas. Tengo que añadir que el tener un montón de azar ramas es confuso, pero imponer un poco de orden en él hace que sea más fácil que tiene sucursales en mi humilde opinión. (Ejemplos de fin podrían estar nombrando ramas puntuales como topic/short_name, incluyendo los mensajes de confirmación significativa, desarrolladores mantienen algún tipo de documentación externa y en realidad hablar el uno al otro, o lo que sea apropiado para su entorno.)

También incluiré una referencia a this flujo de trabajo, ya que se requiere la lectura practally Git, y se aplica a su pregunta.

+0

+1 para un enlace a ese flujo de trabajo de Git. Esa es singularmente la mejor explicación de Git que he visto. –

0

Recuerde que, cuando se va a clonar un repositorio git, es posible obtener todas las sucursales remotas, pero sólo se crea y la salida uno rama local (por lo general master, seguimiento remotes/origin/master)

(Es por eso que tener preguntas como "Track all remote git branches as local branches")

Dependiendo de su tema de interés, usted sólo pago y envío y realizar un seguimiento de una rama específica, hacer algún trabajo, y reajustar periódicamente su rama local en la parte superior de origin/branch para mantener su trabajo y colección de figurines fecha.

No se fusionará de las sucursales públicas oficiales a su sucursal: eso sería una fusión inversa, y se deben evitar, como se ilustra en "What is the right git workflow with shared feature branches?".

0

Salida Greg K-H columna Ask a kernel developer: explica su flujo de trabajo en detalle. Greg solía ser el mantenedor de la rama estable; él es el mantenedor actual de muchos subsistemas, incluido el USB.