En resumen: la mejor práctica es ramificarse, fusionarse a menudo y mantenerse siempre sincronizado .
Hay convenciones bastante claras sobre cómo mantener su código en ramas separadas de la rama maestra:
- Está a punto de implementar un cambio importante o disruptivo.
- Está a punto de hacer algunos cambios que podrían no usarse
- Desea experimentar con algo que no está seguro de que funcione.
- Cuando le dicen que se ramifique, otros pueden tener algo que deben hacer en master
La regla general es que después de ramificarse, debe mantenerse sincronizado con la rama maestra. Porque eventualmente necesitas fusionarlo nuevamente con el maestro. Para evitar un enorme y complicado desorden de conflictos al fusionarse, debe comprometerse con frecuencia, fusionarse con frecuencia.
Buenas prácticas a seguir
Un exitoso modelo de ramificación Git de Vincent Driessen tiene buenas sugerencias. Si este modelo de ramificación le atrae, considere la extensión de flujo a git . Otros han comentado sobre el flujo .
Prácticas de etiquetado
Como ya sabes, Git te proporciona identificadores de confirmación como 1.0-2-g1ab3183, ¡pero esas no son etiquetas! El etiquetado se realiza con git tag, y las etiquetas que se crean con git tag son la base de los identificadores de confirmación que git describe crea. En otras palabras, en Git no etiquetas ramas. Estás etiquetando commits. Es correcto decir que la etiqueta es solo un puntero anotado a una confirmación.
Veamos un ejemplo práctico que lo demostró,
/ - [v1.0]
v
---. ---. --- .--- S ---.--- A <- maestro
\
\ -.--- B <- prueba
Confirmemos 'S' se confirme señalado por la etiqueta 'v1.0'. Esta confirmación es tanto en la rama 'maestra' como en la rama 'prueba'. Si ejecuta " git describe " en la parte superior de la confirmación 'A' (parte superior de la rama 'maestra') obtendría algo así v1.0-2-g9c116e9
. Si ejecuta "git describe" en la parte superior de la confirmación 'A' (también conocida como la rama 'prueba') obtendría algo como v1.0-2-g3f55e41
, ese es el caso con la configuración predeterminada de git-describe. Tenga en cuenta que este resultado es ligeramente diferente. v1.0-2-g9c116e9
significa que estamos comprometidos con la identificación SHA-1 reducida de 9c116e9
2 commits después de la etiqueta v1.0
. No hay etiqueta v1.0-2
!
Si desea que su etiqueta aparezca solo en la rama 'maestra', puede crear una nueva confirmación (por ejemplo, solo actualizar la información de versión predeterminada / alternativa en GIT-VERSION-FILE) después del punto de ramificación de la rama 'prueba'. Si etiqueta las confirmaciones en la rama 'prueba' con, por ejemplo, 'v1.0.3', sería visible solo desde 'prueba'.
Referencias
He encontrado muchos, muchos blogs y publicaciones útiles para aprender. Sin embargo, los que están ilustrados profesionalmente son raros. Por lo tanto, me gustaría recomendar una publicación: un modelo de ramificación Git exitoso de @nvie. He tomado prestada su ilustración :)
Se utiliza una rama si tiene 2 versiones diferentes de repositorio al mismo tiempo. Una etiqueta es una forma de marcar un punto en el tiempo en su repositorio.
Debe agregar una etiqueta para marcar una versión lanzada. Si luego necesita hacer correcciones de errores a esa versión, crearía una rama en la etiqueta.
Solo desea eliminar las ramas que se han fusionado nuevamente en HEAD [o alguna otra rama].
fuente