Git: Un par de trucos

Hay veces  que nos surgen problemas en nuestro código, así que aquí traemos una serie de “truquitos” para intentar evitar quebraderos de cabeza.

Git bisect

Es un comando para cuando tenemos un problema con la versión actual y sabemos que en una versión pasada esa parte del software funcionaba correctamente, localizar el commit que introduce el problema.

Pongamos un ejemplo, estamos en la revisión 213 de nuestro software y uno de los efectos Jquery no funciona, pero sí sabemos que funcionaba la semana pasada, en la revisión 196.
Para buscar el commit que introdujo el fallo podemos hacerlo así:

$ git bisect start
$ git bisect bad [commit/branch/…]
$ git bisect good [commit/brach/…]

Cuando git nos devuelva un chorro de números como b3bfb73e6abbb66259f732976256aaf6 podemos usar algo así como git show b3bfb73e6abbb66259f732976256aaf6 para ver la diferencia.

Lo más molón de todo esto es que con git bisect podemos automatizar la búsqueda. Podemos escribir un test, un script o algo que reproduzca el problema  y git ejecutará el test hasta encontrar el bug.

Más información aquí: https://www.kernel.org/pub/software/scm/git/docs/git-bisect.html y aquí: http://git-scm.com/book/en/Git-Tools-Debugging-with-Git y aquí http://dysfunctionalprogramming.co.uk/blog/2013/08/19/cut-my-frog-into-pieces/

Git Stash

Vamos con otro caso, imaginemos que estamos trabajando en una nueva feature que no está acabada y nos avisan de que hay un error que debemos subsanar ya. ¿Perdemos los cambios y vamos a una versión estable? ¿Modificamos el fichero donde está el error con cuidado de no subir algo que no debemos? ¿Qué hacemos? ¿Qué hacemos con el trabajo a medias?

En git existe un comando llamado git stash. Con este comando podemos congelar los cambios a los que todavía no he hecho commit.

Ejemplo:

Estamos trabajando en algo y hemos modificado algunos archivos.

$ git status
$ git stash
$ git status

Al hacer git stash vemos que hemos congelado los cambios y tenemos el repositorio limpio para resolver el error. Para volver al estado anterior, es decir para descongelar los archivos utilizamos git stash list

Para más información aquí: http://git-scm.com/book/en/Git-Tools-Stashing

Bola extra

Hace tiempo vi un video genial de una GUI para trabajar con ramas, os dejo el video de Youtube y el repositorio git https://github.com/FredrikNoren/ungit

Anuncios

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