Razones para no trabajar en la twig principal en Git

Por lo tanto, soy bastante nuevo en git y después de leer un poco las últimas semanas he leído a algunas personas que dicen que la twig principal no debe cambiarse, sino que debe ser ramificada desde y luego fusionada a .

Estoy feliz de trabajar con sucursales, pero me preguntaba por qué no estaba trabajando en la twig principal.

Supongo que el razonamiento habitual es que la twig principal debería representar la historia "estable" de tu código. utilice las twigs para experimentar con las nuevas funciones, impleméntelas y, cuando hayan madurado lo suficiente, podrá fusionarlas nuevamente en el patrón.

de esa manera, el código en el maestro casi siempre se comstackrá sin problemas y se puede usar principalmente para las versiones.

tomemos git.git (el repository oficial de git) como ejemplo. hay varias twigs, las más notables:

  • dominar
  • siguiente
  • pu
  • Maint

por lo tanto, el master contiene el código que es muy probable que termine en la próxima versión de git. next contiene el código probado, que se fusionará potencialmente en la twig master . pu (actualizaciones propuestas, iirc) contiene un código bastante nuevo (y probablemente) no probado.

pu se considera inestable y se restablecerá y volverá a basar a gusto de junio. next podría reiniciarse después de un lanzamiento o durante un ciclo de lanzamiento, pero esto es less común. master está grabado en piedra y nunca cambió después de haber sido empujado y puesto a disposition del público.

ya ves, los cambios se fusionarán de pu a next y de next to master si se los considera dignos y no rompen cosas.

el branch maint se usa para hacer correcciones de errores que también deberían aplicarse a las versiones anteriores de git. maint generalmente se fusiona con el next y / o master .

puedes inspeccionar las sucursales en http://git.kernel.org/?p=git/git.git;a=summary

Otras personas han hecho muy buenos casos por no hacer cambios directamente en el master , y estoy de acuerdo con ellos. Sin embargo, siempre abogando por flujos de trabajo como este a veces lleva a las personas nuevas a git a creer que es innecesariamente complejo, por lo que quería brindar un contrapunto.

Si tiene un equipo de una sola persona o muy pequeño y su desarrollo es muy lineal, es decir, rara vez trabaja en más de una cosa a la vez y cada function generalmente se completa antes de comenzar la siguiente, realmente no hay ningún beneficio para no trabajar directamente fuera de master . Es muy fácil regresar y agregar una sucursal en cualquier punto si surge la necesidad. Recomiendo conocer el flujo de trabajo de la twig de características, pero si en su caso solo agrega pasos adicionales sin comprarle nada, le prometo que no se lo diré a la policía de git.

Lo único que debe considerar con un DVCS (Sistema de control de versiones distribuidas) como Git o Mercurial es el flujo de trabajo de "publicación" ( ortogonal al flujo de trabajo de bifurcación ).

Cuando solo tienes twigs, te preguntarás qué esfuerzo de desarrollo representan.
Si el master está destinado a representar un código estable, como los detalles de knittl en su respuesta , entonces sí, necesita pasar de / fusionar a master .

Pero cuando puedes clonar / empujar / tirar (es decir, publicar en repositorys diferentes, que pueden tener diferentes propósitos en sí mismos), entonces ' master ' puede jugar un rol diferente de repository a repository.

  • un repository de desarrollo puede tener muchas twigs, y el master generalmente representa el código más estable.
  • un repository de implementación solo puede tener master y alguna twig de mantenimiento de revisiones para reparaciones urgentes.
  • un repository de testing local puede tener solo una twig master , reescrita de presionar para presionar solo para ejecutar un código de análisis estático mediante un gancho que monitorea solo dicha twig master para ese repository de testing.

Al hacer commits en ambos lados, es decir, en su repository local y upstream, por ejemplo, de otros miembros del equipo, puede suceder que se genere un conflicto. Eso significa que los files y en líneas particulares fueron editados por ambos. En este caso, es necesario algún event handling fusión manual.

La twig master es para tener una twig local que representa cadena arriba cuando no puede acceder en sentido ascendente (uso mobile o falla de la networking). Es mucho más fácil fusionar resolución y otras cosas cuando se tiene una sucursal local que representa los cambios ascendentes.