Aprendiendo Git

Yo dawg, I heard you like clean commits
Pero por favor, ten cuidado si ya has publicado tus cambios

Por fin he empezado a practicar con Git después de proponérmelo hace más de un año. Por ahora sólo he hecho un puñado de commits, pero ya me ha servido para ir aprendiendo algunos trucos bastante útiles, sobretodo reescribiendo la historia de los commits (¡algo impensable en Subversion!).

En primer lugar, en Git es especialmente buena idea hacer commits pequeños (por ejemplo, que sólo arreglan un error de compilación), porque facilita mucho el resto de operaciones que se pueden hacer sobre el historial de commits.

En Git es posible reescribir la historia de los commits para hacer cosas como cambiar mensajes de commits, añadir cambios al último commit realizado o unificar varios commits en uno. Esto último es útil, por ejemplo, para unificar un commit que añade una nueva característica y otro commit que arregla un fallo tonto en esa misma característica en un sólo commit, haciendo creer al mundo que somos programadores perfectos que no cometemos fallos.

He aquí un pequeño resumen de algunos de los comandos que me han sido útiles:

  • git add -u: añade al índice (el paso intermedio entre la copia de trabajo y el commit) los ficheros que hayan cambiado desde la última vez
  • git commit –ammend: integra los cambios actuales en el último commit realizado
  • git rebase –interactive commit: (entre otras cosas) reescribe los mensajes de los commits posteriores a commit

Reescribir el mensaje del primer commit es un poco más complicado ya que no tiene padre:

  • git checkout `git rev-list HEAD | tail -1`: checkout de la raíz
  • git commit –amend: corregimos el mensaje
  • git rebase –onto HEAD HEAD master: hacemos que el resto de commits se basen en la raíz cambiada

Hace años git tenía fama de ser difícil de usar. Aunque algunos de estos comandos no son inmediatamente obvios para los que somos novatos, en general la ayuda de git es muy explicativa y sencilla de seguir. Incluso los propios comandos te dan pistas sobre cosas que querrías hacer (como git status). En internet hay además montones de recursos disponibles:

Por último, un pequeño gran detalle: trabajando con código Java (y me imagino que funcionará con muchos otros lenguajes), git diff te muestra la declaración de la clase que haya sido modificada en la cabecera del diff. Oh snap!

About these ads

Deja un comentario

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