Skip to content

GESTIÓN DE LAS RAMAS EN GIT

git stash - Pasar cambios de una rama a otra sin hacer commit.

  • Esta función de git es muy útil para mover los cambios entre ramas sin hacer commits y/o perder los cambios.

Es una pila de ficheros que podemos usar para guardar ficheros con modificaciones que no queremos comitear.

    $ git stash --help

es una ayuda con todas sus opciones.

    $ git stash list

veremos una lista con los ficheros guardados en memoría.

    $ git stash save <nombre_stash>

guarda todos los ficheros sin comitear bajo el nombre que le hemos dado.

    $ git stash show <nombre_stash>

muestras los ficheros que posee el stash deseado.

    $ git stash pop

coge el último stash y lo recupera quitandolo de la lista, esto lo recupera en la rama en la que nos encontremos. (Esta opción es la más recomendable cuando se trata de un cambio)

    $ git stash apply <nombre_stash> ó <número_index>

recupera el documento o cambio especificado.

    $ git stash clear

borra todos los stash.

    $ git stash drop -q <nombre_stash>

borra el stash indicado.

Proceso para preparar la rama con la que trabajar a partir de la rama dev.

1. Lo primero es actualizarse la estructura de las ramas:

    $ git fetch

2. Comprobamos en que estado estamos y nos cambios de rama sino nos encontramos en la rama dev:

    $ git status
    $ git checkout dev

3. Reseteamos la rama al último estado remoto:

    $ git reset --hard origin/dev

4. Comprobamos cambios que se haya podido subir mientras este proceso:

    $ git pull origin dev

5. Y por último, creamos la rama con el nombre USXXXX o DEXXXX seguido de una breve descripción que la identifique correctamente sin espacios:

    $ git checkout -b <USXXXX_ejemplo_nombre_rama>

con esto nos aseguramos que partimos de la última version de la rama dev.

git cherry-pick - Aplicar los cambios introducidos por algunos commits existentes.

1. Lo primero es ver el log de los commit:

    $ git log (--oneline)

2. Aplicar el cherry-pick del commit deseado:

    $ git cherry-pick <nº de commit>

con esto se aplican los cambios de commits.

Tarea de mergeo de mi rama con la rama dev.

1. Realizamos los pasos hasta el nº 4 que vimos anteriormente para tener la última versión de dev:

    $ git fetch
    $ git reset --hard origin/dev
    $ git pull origin dev

2. Y ahora mergeamos nuestra rama sobre dev (estando sobre la rama dev):

    $ git merge <USXXXX_ejemplo_nombre_rama>

3. Si existieran conflictos los resolvemos:

    $ git mergetool -t meld

meld o el editor de texto deseado.

4. Borramos los archivos temporas/.orig creados en la resolución del conflicto:

    $ git clean -f

5. Hacemos commit sin mensaje ya git genera los commits de mergeo:

    & git commit
  • una vez hecho el commit, salimos del editor de texto en el que entramos.*

6. Hasta aqui tendriamos mergeada la rama dev con nuesra rama, asi que procedemos a la segunda parte la que hace posible las pruebas cruzadas. Volvemos a nuestra rama:

    $ git checkout <USXXXX_ejemplo_nombre_rama_mergeada_anteriormente>

7. Ahora como ya estamos en nuestra rama mergeamos con dev:

    $ git merge dev

8. Ya está lista para subir nuestra rama con los cambios a una rama remota con el mismo nombre:

    $ git push origin <USXXXX_ejemplo_nombre_rama>

9. Por último, accedemos a github y pedimos el pullRequest desde nuestra rama recien subida a la rama dev. Esto dejará nuestra rama en un tablón en el que el encargado QA en ese momento podrá probar los cambios y a partir de ahí aprobar o rechazar el pullRequest. Si es aprobado faltaría hacer el pullRequest con la rama master. Si es rechazado y viene de una Historia de usuario se abre un defecto que se tiene que corregir, si ya es un defecto se vuelve al anterior asignado para que lo corrija.