2010-11-07 16 views
5

Tengo una rama principal master que contiene el código estable. Cada vez que deseo construir algo nuevo I get checkout -b 'development', agregue el nuevo código, luego vuelva a fusionarlo en el maestro y elimine la rama de desarrollo.¿Crear y eliminar muchas ramas en git es malo?

Sin embargo, ¿esto está creando una base de datos repo más grande que simplemente mantener la rama de desarrollo y fusionar el master en ella (para que el desarrollo esté actualizado) antes de agregar algo nuevo? ¿Todas estas ramas de desarrollo de temperatura toman más espacio en el repositorio?

Respuesta

6

Crear ramas temporales para temas/funciones/tareas individuales es bueno. Lo estás haciendo bien. No se limite a "desarrollo" - "featureA", "bugX", "bugX-testing", cualquier cosa que necesite, ¡hágala!

Una rama ocupa esencialmente ningún espacio. Es un puntero a la confirmación en su punta, por lo que se representa como un archivo (.git/refs/heads/branch-name) cuyos contenidos son simplemente el SHA1 de esa confirmación. Pequeñito. Eventualmente, se pueden agrupar en el archivo packed-refs, que es solo una línea por nombre de rama y SHA1, ¡incluso más pequeño que el original! (Git hace esto para evitar tener demasiados archivos en un repositorio que tiene, digamos, 1000 etiquetas de versiones de versiones menores/de mantenimiento en su historial). También tienen reflogs, que registran una línea cada vez que cambia la posición de la rama. (prueba git reflog show para ver el reflog para HEAD), pero una vez más, es bastante pequeño, y se elimina cuando eliminas la rama.

1

No está mal y en realidad se recomienda para el código experimental.

Si le preocupa el tamaño de su repositorio, use 'git gc' para recoger la basura y comprimirla.

4

Como explicó Jefromi, las sucursales están diseñadas para ser ridículamente baratas. No solo eso, hasta donde yo sé, Git es the only major, free VCS que se ramifica de esta manera.

teniendo en cuenta lo que parece estar utilizando ramas, creo que podría beneficiarse de la nvie GitFlow branching model y helper extension (enlace a la entrada del blog explicativo) como una forma sencilla y limpia para sacar el máximo provecho de ramificación para la gestión de la liberación. (Básicamente, un enfoque más pulido de lo que parece que ya estás haciendo)