Git: cómo pueden los mantenedores de git / linux mantener tantas twigs

Personalmente, si miro el git o el repo de Linux con gitk, estoy totalmente abrumado por la gran cantidad de fusiones / ramificadas. No tengo ni idea de lo que está pasando.

Supuse que, en general, intentas tener una historia tan lineal como sea posible y solo unas pocas twigs (por ejemplo, master, maint, next, pu – that it is) en el repository público . Es decir, supongo que las fusiones son raras veces y, en su mayoría, se usa la rebase. Aparentemente estoy equivocado.

  1. Me pregunto qué hacen los mantenedores de git / linux para tener una buena visión general
  2. ¿Por qué no usan rebase más a menudo y tienen muchas más twigs que solo master, maint, next pu?

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

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

Durante el time que esté trabajando en una fusión local, puede usar rebase tantas veces como quiera, ya que 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 sucursales 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.

No soy un desarrollador de Kernel, y ciertamente no puedo hablar por ellos. Aquí hay una reference en la que Linus habló un poco, creo que responde sus preguntas. Añadiré que tener muchas twigs aleatorias es confuso, pero imponer un poco de order hace que sea más fácil tener sucursales en mi humilde opinión. (Ejemplos de order pueden ser nombrar twigs de tema como topic/short_name , incluidos los posts de confirmación significativos, los desarrolladores mantienen cierta documentation externa y hablan entre sí, o lo que sea apropiado para su entorno).

También includeé una reference a este flujo de trabajo, ya que es una lectura requerida de Git y se aplica a su pregunta.

Recuerde que, cuando está clonando un repository de git, puede get todas las sucursales remotas, pero solo crea y compra una sucursal local (generalmente master , rastreo de remotes/origin/master )

(Esta es la razón por la que tiene preguntas como " Rastree todas las sucursales remotas de git como sucursales locales ")

Dependiendo de su tema de interés, solo pagaría y rastrearía una sucursal específica, haría algún trabajo y networkingirigiría regularmente su sucursal local sobre el origin/branch para mantener su trabajo actualizado.

No se fusionará de las sucursales públicas oficiales a su sucursal: eso sería una fusión inversa, y deberían evitarse, como se ilustra en " ¿Cuál es el flujo de trabajo git correcto con twigs de funciones compartidas? ".

Echa un vistazo a Greg KH Pregunta a una columna de desarrollador de kernel : explica su flujo de trabajo en detalle. Greg solía ser el mantenedor de la twig estable; él es el mantenedor actual de muchos subsistemas, incluido el USB.