martes, 17 de septiembre de 2013

Katas de GIT

Git es manejador de versiones de código distribuido (DVCS) de mucho uso. Para los que venimos de SVN es a la vez familiar (algunos conceptos no cambian) y extraño (da mucha más flexibilidad, que nos deja a veces usando Git como hacíamos con SVN).

Hay mucho material disponible, por ejemplo:
Ahora que ya lo tenemos instalado y leímos sobre Git, ¿sabemos Git?

Creo que sin el uso y práctica, no sabemos sobre Git (¡o cualquier otra cosa!) al nivel necesario para nuestra día a día laboral.


Por que una Kata

Una forma de incorporar la práctica es con ejercicios en ambientes seguros. La posibilidad de repetición permite incorporar los conceptos hasta que salgan naturalmente, y el ambiente seguro nos permite explorar formas alternativas, sin miedo de perder nuestro trabajo. Ver como ejemplo las Code Katas.

Katas

Crear ambiente para las Katas

cd
mkdir gitkata
cd gitkata
git init --bare repo
git clone repo a_local
git clone repo b_local

Nota: en vez de usar un repositorio local, como este caso, podemos usar un repo remoto en Github,  Bitbucket u otro.

Kata 1 - básico

Crear un archivo en a_local, subirlo al repo y actualizar b_local para que refleje los cambios.

Kata 2 - branch

Crear un branch en a_local y subir cambios al branch, publicar al remoto (repo)
Actualizar branches y contenido en b_local

Kata 3 - merge

Crear un branch dev, aplicar cambios
Crear un branch fix (a partir de mastter), y aplicar los cambios a master y a dev

(hint: gitk)

Kata 4 - merge con conflictos

cd a_local
touch hola
git add hola
git commit -m "Nuevo saludo"
git push
cd ../b_local
git pull
echo "Hola, como estas?" > hola
git commit -a -m "Saludo mejorado"
cd ../a_local
echo "Bueno días" > hola
git commit -a -m "Saludos de inicio de dia"
git pull
Resolver un conflicto en los commit.

Kata avanzados

  • ordenar la historia (hint: rebase)
  • trabajando en el branch equivocado (hint: rebase).
  • un commit incorrecto (descartar un commit).
  • demasiados commit (hint Squashing)
  • elegir una feature (hint cherry-pick).

¡Contame que te parece!