Cómo administrar una jerarquía de committers (como Linux kernel dev)

Soy un committer en un proyecto con un repository de GitHub. Tengo un pequeño equipo de desarrolladores que no pueden leer o comprometerse con ese repository. Me gustaría configurar un server de git con el que puedan comprometerse, que es un clon del repository de GitHub. Cuando hacen commits, los revisaré, a veces haré ediciones, y luego presionaré para el repository de GitHub.

Mi pregunta es, ya que a veces alteraré sus compromisos, ¿cuál es el mejor flujo de trabajo para llevar los cambios de GitHub a mi server de clonación para que la historia de todos no se estropee?

EDITAR: para aclarar, no necesariamente significa que los commit serán editados. Pero es posible que necesite eliminar / rechazar algunas confirmaciones enviadas (y tal vez crear nuevas que las mejoren). ¿Cómo afectará eso a los desarrolladores posteriores a mí?

Si no recuerdo mal, Linux maneja las cosas un poco diferente de lo que estás proponiendo, debido a la gran cantidad de desarrolladores que contribuyen activamente a varios subsistemas.

Cada subsistema de kernel principal tiene un "teniente", responsable de disputar los compromisos de los desarrolladores que contribuyen a ese subsistema. Cada teniente avala la calidad de sus subdesarrolladores y le dice a Linus cuándo tienen listos los cambios para tirar. Linus, la única persona con acceso de confirmación al repository "maestro", luego saca sus cambios uno a la vez. Si hay conflictos entre los Tenientes Joe y Bob, él le dirá a Joe que se retire de Bob y se encargue de la fusión, y luego lo sacará nuevamente de Joe.

Para tu situación, creo que lo que describes es ideal. Un repository remoto público al que todos sus desarrolladores pueden acceder, lo que les permite manejar conflictos y fusiones. No hay ninguna necesidad de alterar los commits más allá de fusionarlos, lo cual debería hacerse por usted. Si necesita cambiar el código, puede crear nuevas confirmaciones y enviarlas al repository público de git para que los desarrolladores las selectn.

No sé si hay alguna forma segura de alterar los commits que existen en varios repositorys. Tan pronto como hagas esto, tus repositorys se han separado y no podrás empujar / tirar sin saltar por los aro .