Podría beneficiarse del flujo de trabajo que Scott Chacon describe en Pro Git . En este flujo de trabajo, tiene dos ramas que siempre existen, master y desarrollo .
master representa la versión más estable de su proyecto y solo se implementa en producción desde esta rama.
desarrollar contiene cambios que están en progreso y que no necesariamente están listos para la producción.
Desde la rama de desarrollo , puede crear ramas de temas para trabajar en arreglos y características individuales. Una vez que su función / arreglo está listo para funcionar, lo fusiona en desarrollo , en ese momento puede probar cómo interactúa con otras ramas temáticas en las que sus compañeros de trabajo se han fusionado. Una vez que el desarrollo esté en un estado estable, combínelo en maestro . Siempre debe ser seguro implementarlo en producción desde el maestro .
Scott describe estas ramas de larga duración como "silos" de código, donde el código en una rama menos estable eventualmente se "graduará" a una considerada más estable después de las pruebas y la aprobación general de su equipo.
Paso a paso, su flujo de trabajo bajo este modelo podría verse así:
- Necesitas arreglar un error.
- Cree una rama llamada myfix que se base en la rama de desarrollo .
- Trabaje en el error en esta rama de tema hasta que se solucione.
- Combinar myfix en desarrollar . Ejecute pruebas.
- Usted descubre que su arreglo entra en conflicto con otro hisfix de rama de tema en el que su compañero de trabajo se fusionó para desarrollar mientras trabajaba en su arreglo.
- Realice más cambios en la rama myfix para lidiar con estos conflictos.
- Combinar myfix en desarrollar y ejecutar pruebas de nuevo.
- Todo funciona bien Fusionarse para convertirse en maestro .
- Implemente en producción desde el maestro en cualquier momento, porque sabe que es estable.
Para obtener más detalles sobre este flujo de trabajo, consulte el capítulo Flujos de trabajo de ramificación en Pro Git.
develop
es una 'solución' innecesario a un problema que no tiene git. Por lo que puedo decir, el éxito se debe a un artículo bien escrito, si está mal dirigido, sin comentarios permitidos. Aquí hay un contra-artículo barro.github.io/2016/02/…Después de llegar como un novato tratando de encontrar una estrategia directa para enseñar a otros desarrolladores que nunca han usado el control de la fuente. Este es el que se ajusta a http://nvie.com/posts/a-successful-git-branching-model/ Intenté usar el flujo de trabajo estándar de GIT que está en las páginas del manual, pero me confundió un poco y a mi audiencia por completo.
En los últimos 6 meses solo he tenido que arreglar conflictos dos veces. He agregado pasos para probar siempre después de una fusión y para 'buscar y fusionar "o' extraer --rebase" mucho (una vez por la mañana y por la tarde) al desarrollar funciones. También usamos github.com como el lugar central para extraer el último código.
fuente
default master branch
NO se usa con mayor frecuencia como desarrollador en estoA successful Git branching model
(Hice mi comentario arriba es su propia respuesta, como debería haberlo hecho inicialmente).
De Scott Chacon de Github:
Vea el artículo completo para más detalles: http://scottchacon.com/2011/08/31/github-flow.html
Tenga en cuenta que las "solicitudes de extracción" son un invento de Github, y es algo que está integrado en su sitio web, no Git en sí: https://help.github.com/articles/using-pull-requests/
fuente
Use la
master
rama como su rama de desarrollo y cree ramas de lanzamiento para realizar correcciones de errores.Cualquier característica nueva continuará
master
durante la ventana de desarrollo (ya sea confirmada directamente o como rama temática con solicitudes de extracción, depende de usted, no se muestra en el gráfico). Una vez que se implementen todas las funciones planificadas, ingrese el congelamiento de funciones y realice las pruebas. Cuando estés contento, etiqueta el lanzamientomaster
comov1.0
.Con el tiempo, sus usuarios encontrarán errores,
v1.0
por lo que querrá crear una rama a partir de esa etiqueta (por ejemplo, nombrarla después del lanzamiento1.0
) y corregir esos errores en la rama. Cuando hayas solucionado suficientes errores que creas que justifica una nueva versión, etiquétala comov1.0.1
y únela nuevamentemaster
.Mientras tanto, puede estar ocurriendo una nueva ventana de desarrollo en la
master
rama que eventualmente se etiquetará comov1.1
.Enjuague y repita.
Esto sigue la lógica de numeración de versiones semánticas .
fuente
1.0.1
cambios nuevamentemaster
1.1
maestra después de la fusión1.0.1
, esto ayuda a minimizar la conficción.1.1
es una rama de lanzamiento y tiene etiquetas que representan el estado exacto de uno o más lanzamientos. Rebasar esa rama te haría perder esa representación. Recomiendo encarecidamente configurar sus ramas de liberación para negar los empujes forzados para evitar esto.En un VCS, tener solo una rama "maestra" muestra rápidamente sus límites porque no puede realizar todo el esfuerzo de desarrollo al mismo tiempo en una rama.
Eso significa que necesita saber cuándo ramificarse .
Pero en un DVCS (como en el VCS "descentralizado"), también tiene un problema de publicación , con ramas que mantiene locales en sus repositorios, y ramas a las que está empujando o tirando.
En este contexto, comience por identificar su esfuerzo de desarrollo concurrente y decida un proceso de publicación (push / pull). Por ejemplo (y esta no es la única forma):
nadie debe presionar directamente para producir (por lo tanto, solo lectura)
Todos pueden presionar para liberar para actualizar la próxima versión.
Todos pueden sacar de dicho lanzamiento para actualizar su proceso de consolidación local.
Existen otros procesos de administración de versiones, como lo atestigua esta pregunta SO .
fuente
Lea el flujo de trabajo Git de ReinH para equipos ágiles aquí: http://reinh.com/blog/2009/03/02/a-git-workflow-for-agile-teams.html
Esto funciona muy bien para equipos pequeños. El objetivo aquí es asegurarse de que todo lo que pueda ser potencialmente inestable entre en algún tipo de rama. Vuelva a fusionarse con master cuando esté listo para que todos los que trabajan fuera de la rama de características lo usen.
Nota: esta estrategia no es específica de git, pero git hace que implementar esta estrategia sea bastante fácil.
fuente