GitFlow
Hace unos días publiqué una entrada sobre “una buena manera de afrontar la ramificación utilizando Git. Un comentario del blog de Jorge Jiménez (@jorgejiro) me recordó git-flow y ahora voy a intentar realizar una pequeña introducción a este hack.
¿Qué es git-flow?
Es una colección de extensiones para Git que proveen e unas serie de operaciones de alto nivel para utilizar un repositorio Git de manera más fácil.
Para entender mejor como empezar con git-flow lo mejor he encontrado este post http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/ (INGLÉS). Intentaré traducirlo:
Instalando git-flow
MAC
> brew install git-flow
Linux
> wget --no-check-certificate -q -O - https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sudo bash
WindowS
No utiliza windows, pero hay una documentación bastante interesante en https://github.com/nvie/gitflow/wiki/Windows
Después de instalar git-flow
Después de instalar git-flow, puedes crear un nuevo repositorio en el directorio donde te encuentras, o puedes convertir un repositorio existente en una nueva rama. Para ello
>git flow init
Ahora seguro que tienes un puñado de preguntas, pero probablemente aceptes los valores por defecto:
No existen ramas todavía. Hora deben crearse las ramas base. El nombre de la rama para lanzamientos (releases) de producción: [master] El nombre de la rama para “Nueva reléase en desarrollo”: [develop] ¿Qué nombre tienen las ramas de soporte? Rama de Feature? [feature/] Rama de lanzamiento (release)? [release/] Rama de Hotfix? [hotfix/] Rama de soporte? [support/] Etiqueta de prefijo? []
Después de que hayas respondido a estas preguntas, git-flow establece automáticamente como rama por defecto develop (o como la hayas llamado).
Ahora simplemente usa Git como quieras, pero recuerda trabajar solo con pequeños features en la rama develop. Si necesitas crear una gran featuras, crea una nueva rama basada en develop. Digamos que quieres añadir una página para realizar el login.
>git flow feature star login
Este comando creará una nueva rama llamada feature/login, basada en nuestra rama develop y cambiará a esta nueva rama que acabamos de crear. Puedes realizar sobre esta rama los “commits” que quieras y cuando termines el trabajo, simplemente tienes que decir que la feature está terminada.
>git flow feature finish login
Esto realizará un “merge” de feature/login a develop y borrará la rama de la feature.
Cuando tengamos completa toda la feature simplemente podemos empezar una rama release (basada en develop). Para poder lanzar la release es importante no olvidarse del numero de versión de la release.
> git flow ewlwase star v0.1.0
Cuando toda la release este terminada, con los bugs solucionados etc. deberemos “subir a producción los cambios” Así que es necesario que hagamos un merge con los cambios de develop a master. No hay que olvidarse de volver a la rama develop después de subir los cambios
Las cosas que podemos hacer con git-flow son asombrosas, es muy fácil manejar hotfixes. Es posible empezar y finalizar ramas hotfix basadas en master , de esta manera es posible resolver bugs que afecten a la rama en producción de una manera fácil.
Instalación en Windows MSysGit
Descargar he instalar getopt.exe del paquete util-linux en C:\Program Files\Git\bin (Solo es necesario getopt.exe, los demás archivos de útil-linux no se utilizan) también es necesario descargar el mismo directorio una dependencia libintl3.dll.
Clonamos el repositorio de git-flow desde GitHub
> Git clone –recursive git://githu b.com/nvie/gitflow.git >cd gitflow
Ahora solo debemos ejecutar el script msysgit-install desde el prompt (cmd.exe) *Es necesario tener “privilegios de administrador” para poder ejecutar el script.
C:\gitflow> contrib\msysgit-install.cmd
Ahora debemos crear un enlace para poder utilizar “>git flow” en cualquier lugar
> ln -s /C/gitflow/git-flow git-flow
GitHub para Windows
GitHib para Windows utiliza una instalación portable de MSysGit para la Shell. Necesitaremos seguir las instrucciones para MSysGit, excepto por 2 diferencias, ambas relacionadas con la localización de la instalación de Git-flow. Para encontrar la localización:
Navega hasta el directorio de GitHub. En Windows 7 está en «C:\Users\USER_NAME\AppData\Local\GitHub». Buscaremos un directorio con un nombre similar a «PortableGit_8810fd5c2c79c73adcc73fd0825f3b32fdb816e7».
Una vez que este e este directorio, tan solo debemos seguir las instrucciones de MSysGet:
Copiaremos getopt.exe y libintl3.dll al directorio bin que esta debajo de donde te encuentras. En Windows 7 deberíamos copiar los archivos a “C:\Users\USER_NAME\AppData\Local\GitHub\PortableGit_8810fd5c2c79c73adcc73fd0825f3b32fdb816e7\bin”.
Abrir la Shell para Windows de GitHub y chequearemos que estamos en el directorio raíz de GitHub, por ejemplo C:\GitHub clonamos GitFlow aen la carpeta con el siguiente comando.
C:\GitHub> git clone --recursive git://github.com/nvie/gitflow.git
Ahora obtendremos una copia del código de gitflow en nuestra carpeta e GitHub.
Cambiamos al directorio GitFlow así:
C:\GitHub> cd gitflow
Ejecutamos msysgit-install poniendo como parámetro la localización. Por Ejemplo:
C:\GitHub\gitflow [develop]> contrib\msysgit-install.cmd «C:\Users\USER_NAME\AppData\Local\GitHub\PortableGit_8810fd5c2c79c73adcc73fd0825f3b32fdb816e7»
*Reemplazar PortableGit_8810fd5c2c79c73adcc73fd0825f3b32fdb816e7 con el nombre de tu directorio, no es necesario poner /bin al final
Por último solo queda chequear si GitFlow se ha instalado:
C:\GitHub> git flow help
Instrucciones
Estas instrucciones son una traducción del repositorio de github https://github.com/nvie/gitflow
Inicialización
Para crear un nuevo repositorio con la estructura básica usamos:
git flow init [-d]
Con esto deberemos responder a una serie de preguntas. Si deseamos los valores por defecto solo tenemos que usar la etiqueta –d
Crear una rama feature/release/hotfix/support
- Para listar/comenzar/finalizar ramas de feature utilizamos:
git flow feature
git flow feature start []
gitflowfeaturefinish
El argumento base para rama feature debe ser un commit en develop
- Push/pull una rama de feature en un repositorio remoto utilizamos:
git flow feature publish <name>
git flow feature pull <remote> <name>
- Para listar/comenzar/finalizar ramas de release utilizamos:
git flow release
git flow release start <release> [<base>]
git flow release finish <release>
El argumento <base> debe ser un commit sobre develop
- Para listar/empezar/finalizar ramas hotfix usamos
git flow hotfix
git flow hotfix start <release> [<base>]
git flow hotfix finish <release>
El argumento <base> debe ser un commit sobre master
- Para listar/empezar ramas de soporte
git flow support
git flow support start <release> <base>
El argumento <base> debe ser un commit sobre master
Muchas gracias por compartirlo. La verdad es que tiene buena pinta. A ver si pronto arrancamos con Git y podemos utilizarlo.
Me gustaMe gusta
Si quieres una sugerencia útil para una herramienta de traducción que trabaja con po, resx, cuerdas y así sucesivamente, https://poeditor.com sería mi elección. Cuenta con una interfaz sencilla con un diseño colaborativo de proyectos y muchas otras posibilidades. También se conecta con sus proyectos github para obtener sus archivos desde los repositorios.
Me gustaMe gusta