Git-flow primeros pasos

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

Anuncios

5 comentarios sobre “Git-flow primeros pasos

  1. 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 gusta

Comenta la entrada

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s