Introducción a Git (II)

por:

Manual de git tu repositorio

 

Git : Usando ramas

¿Qué ocurre si queremos trabajar en el desarrollo de una nueva función de nuestro software pero queremos añadirlo a la rama principal una vez que esté completamente desarrollado? Crearíamos una nueva rama en la que trabajaríamos para luego fusionarla con la principal. Esto se hace con el comando git branch <nombre de la rama>, para luego movernos a ese branch con git checkout:

$ git branch nuevo

$ git checkout nuevo

Alternativamente, podemos juntar estos dos pasos escribiendo:

$ git checkout -b nuevo

Esta rama no estará disponible en el repositorio remoto a menos que la subamos:

$ git push origin nuevo

Cuando queramos fusionar esta rama con otra, por ejemplo la rama master (que es la rama por defecto), deberemos hacer el checkout a dicha rama y luego usar git merge:

$ git checkout master

$ git merge nuevo

En el caso de que hayan habido cambios en la rama master probablemente habrá que corregir conflictos en los archivos manualmente. Tras la resolución de dichos conflictos tendremos que hacer el add y el commit habitual. Antes de hacer el merge podemos consultar las diferencias usando:

$ git diff master nuevo

Y finalmente, si consideramos que hemos acabado con esta rama y queremos borrarla:

$ git branch -d nuevo

Etiquetando versiones

Para marcar un determinado commit con un número de versión usamos el comando git tag. Si queremos marcar el commit en el que estamos actualmente debemos poner git tag <versión>. Ejemplo:

$ git tag 0.1

Alternativamente podemos poner el número de otro commit para ponerle un número de versión, por ejemplo:

$ git tag 0.1 f185bf7

Para saber el número de un commit podemos usar el comando git log, que también nos muestra el comentario, la fecha y el usuario que introdujo los cambios de commits anteriores en el que los encontremos.

Para movernos a esta versión usaremos el comando git checkout:

$ git checkout 0.1

Moviéndonos entre versiones

Para movernos entre commits usaremos el comando git checkout. Este comando nos permite trabajar con otros commits, como ya hemos visto. Podemos usarlo de versas formas, ya sea utilizando el número del commit, el nombre de una rama o el de una etiqueta:

$ git checkout <branch | tag | commit>
¿Y si tan solo queremos coger un archivo de otro commit? También podemos:

$ git checkout <branch | tag | commit> -- <archivo>

Enmendando errores

¿Hemos cometido algún error en el último commit? Ya sea un comentario erróneo, el olvido de añadir un archivo o la adición de un archivo que no correspondía tiene solución.

En el caso del olvido de un archivo:

$ git add archivo_olvidado

O en el caso de querer quitar un archivo del commit:

$ git rm --cached archivo_sobrante

git rm borra el archivo y avisa a git de que lo hemos borrado. En este caso hacemos uso de la opción –cached para que no borre el archivo en sí.

Tras esto ya haremos el commit con la opción –amend:

$ git commit --amend -m <Comentario>

Este comando juntará los cambios que hayamos hecho ahora con los que hicimos en el commit erróneo.

Pero, ¿qué ocurre si el error se ha producido varios commits atrás y queremos borrar todos los commits tras éste? Haremos uso de git reset:

$ git reset --hard <commit | tag | branch>

La opción –hard provoca el descarte de todas las modificaciones hechas en el directorio de trabajo. Sin dicha opción el espacio de trabajo no sería modificado, tan solo la historia del repositorio.

 

Referencias externas

Para una referencia más completa sobre el uso de git, podéis dirigiros a su web en la que tienen un libro muy completo sobre el uso de git que está traducido (parcialmente) al castellano y disponible online o para descargar en PDF, ePub o mobi de forma gratuita.

Deja una Respuesta