Ramas (O branches) en git
Esto podría considerarse un ayuda memoria para trabajar con ramas en git. A mi manera de ver las cosas, la mejor manera de trabajar es tener 3 entornos:
- Produccion (Checkout a master)
- Stage (Checkout a dev)
- Desarrollo (Checkout a una rama local a partir de dev)
Cuando estamos desarrollando, lo mas conveniente siempre es realizar pequeñas implementaciones que nos permitan tener un menor impacto al momento de tener que analizar un error, o en caso de tener que hacer un merge con otras ramas. Para esto, podemos hacer checkout a la rama en la que vamos a estar trabajando, suponiendo que nos piden una nueva funcionalidad y en el issue tracker quedo con numero 42 ( 😉 😉 ).
$ git checkout dev $ git checkout -b FR#42
Luego de hacer los cambios necesarios, realizamos el commit
$ git commit -m "Version inicial de la feature #42"
Hacemos el push de la rama hacia origin
$ git push -u origin FR#42
Una vez que la nueva rama FR#42 esta actualizada en el repositorio, nos disponemos a realizar las pruebas en el ambiente de stage. Para eso, necesitamos hacer un merge entre nuestra rama y dev
$ git checkout dev $ git merge FR#42 $ git push
Con esto, nuestra rama de stage quedará sincronizada con FR#42. Solo resta hacer un pull en nuestro ambiente de stage y listo.
Lo mismo pasa cuando queremos sincronizar stage con producccion. Simplemente hacemos checkout de master, merge con dev y luego el push
$ git checkout master $ git merge dev $ git push
Debemos tener siempre presente que si hay conflictos en cada merge, debemos resolverlos antes de realizar el push.
¿Que opinás?