En primer lugar, lo siento si se trata de un duplicado, pero traté de buscar y todo lo que pude encontrar fue información sobre cómo hacer ramas en Git y otras cosas. Eso no es lo que estoy buscando tanto; Estoy tratando de descubrir cómo las diferentes personas configuran sus ramas de Git para que coincidan con su flujo de trabajo.¿Cuáles son algunos de los esquemas de ramificación/compromiso de vida más comunes de Git?
Déjeme darle un ejemplo de cómo nuestra empresa lo hace:
- desarrollador se compromete en su propia rama, localmente
- desarrollador empuja comprometerse con su mando a distancia, donde un sistema de integración continua la comprueba y otro desarrollador revisa
- Si la revisión/construir pases, la confirmación se fusionaron en una rama de control de calidad (si no funciona, se hacen más confirmaciones hasta que la revisión/construir pases)
- Si la confirmación falla de control de calidad, una reversión cometer está hecho para sacarlo
- Después de que las confirmaciones de QA estén listas, nuestra rama maestra recibe las confirmaciones (la rama de control de calidad se basa en ella, por lo que no se necesitan fusiones)
- Las ramificaciones periódicas se toman de la rama maestra y se usan para liberar "en la naturaleza" ". Si se encuentran problemas aquí, una reversión cometer volverá a ser utilizado para eliminar el código
- Después de un lanzamiento, los desarrolladores de rebase sus ramas en la rama principal (conseguir ambos sus confirmaciones sobre las previas y las de otros desarrolladores)
Ahora, hay algunos problemas con este sistema; Notaré algunos en los comentarios, pero realmente no estoy buscando "arregle nuestro sistema por favor", solo estoy tratando de ver qué otras opciones de ramificación podríamos usar en su lugar, para poder pesar el varias posibilidades.
Entonces, si ha trabajado en varias compañías que usan Git (o incluso mejor, si es una especie de consultor que ha visto montones de configuraciones de Git), ¿podría compartir: cómo las diferentes compañías configuran las sucursales de Git? (y mueve commits entre ellos) para facilitar las diversas etapas de desarrollo ... ¿todo mientras trata de ser lo menos molesto posible? Estoy seguro de que debe haber algunos patrones comunes ... pero no tengo idea de lo que son.
P.S. Si solo has visto una configuración de Git, pero crees que es interesante, por favor, publícala. Sin embargo, me gustaría otorgar la respuesta a quien ofrezca el mejor desglose de opciones posibles, y espero que venga de alguien que haya visto varias configuraciones de Git.
He mencionado que nuestro sistema tiene problemas. Un ejemplo es la rebase: Git tiene todas estas geniales funciones de rebase, pero solo podemos usarlo desde el principio (antes de que una confirmación haya pasado a QA), o al final (para llevar las confirmaciones a las ramas de desarrollador); si queremos volver a organizar o eliminar commits en cualquier momento entre medio tenemos que usar revertir commits. Esto nos lleva a otro problema, nuestro historial de Git: debido a todas las confusiones de fusión y reenvío de confirmaciones que hacemos, obtenemos toneladas de spam de registro. Otro problema con este sistema es que los commits no se pueden compartir fácilmente entre los desarrolladores (para la programación entre pares) ... – machineghost
... y también hay otros problemas, pero como dije no estoy buscando soluciones específicas aquí, solo alguna comprensión de posibles alternativas. – machineghost
Agregue esto a la publicación principal y no a comentarios. –