Git with gifs

64

Click here to load reader

description

Rubén Sierra Asturias 13 de Marzo de 2013

Transcript of Git with gifs

Page 1: Git with gifs

with gifs

Page 2: Git with gifs

Sistemas de

control de versiones

Gestionan los cambios realizados

sobre diversos elementos a lo

largo del tiempo.

Page 3: Git with gifs

Git

• Diseñado por Linus Torvalds para

Linux.

• Git: distribuido, rápido y

eficiente.

Page 4: Git with gifs
Page 5: Git with gifs

• Branches: ramas del repositorio.

• Commits: guardado de cambios.

• Merge: mezcla de los commits de

distintas ramas.

• Push/Pull: sincronización con el

repositorio remoto.

Conceptos básicos

Page 6: Git with gifs

No tenemos nada

en contra de SVN

pero...

Page 7: Git with gifs

...cuando un nuevo

empleado dice que

prefiere usar SVN

antes que Git...

Page 8: Git with gifs
Page 9: Git with gifs

Workflow ideal

• Desarrollo en ramas de largo recorrido

(master/develop).

• Rama master para versiones estables.

• Ramas puntuales:

o features: nuevas funcionalidades.

o releases: para congelar una versión.

o fixes: corrección de bugs.

Page 10: Git with gifs

• Nunca commits directos

sobre master.

• Develop estable

=> merge a master.

Desarrollo

Page 11: Git with gifs

• Nuevas features siempre

nacen de develop.

• Features finalizadas siempre

vuelven a develop y se borran.

Features

Page 12: Git with gifs

• Nuevas releases siempre nacen de develop.

• Releases finalizadassiempre vuelven a

master y develop.

• Se congela la release

en un tag.

Releases

Page 13: Git with gifs

• Fixes siempre nacen

de master.

• Fixes vuelven amaster y develop.

• Se genera unanueva versión.

Fixes

Page 14: Git with gifs

Siguiendo esto...

Page 15: Git with gifs
Page 16: Git with gifs

...pero no siempre

es aplicable.

Page 17: Git with gifs

Una mañana

cualquiera en

Simplelógica...

Page 18: Git with gifs
Page 19: Git with gifs

Tenemos marrones

Page 20: Git with gifs

Muchas veces nos

gustaría...

Page 21: Git with gifs
Page 22: Git with gifs

Pero es nuestro

trabajo...

Page 23: Git with gifs

• Periodo de desarrollo menos

prolongado.

• Cambios imprevistos.

• Entorno de pre-producción para el

cliente.

Con clientes

Page 24: Git with gifs

Nuestro workflow

• Desarrollo en ramas de largo recorrido

(master/staging).

• Rama master para entorno en producción.

• Rama staging para pre-producción.

• Ramas puntuales:

o features: nuevas funcionalidades.

o fixes: corrección de bugs.

Page 25: Git with gifs

• Nuevas features nacen de master.

• Features finalizadas se pasan a staging

para que las pruebe el cliente.

• Fixes vuelven a master y staging.

• Nunca commits directos en staging.

• Staging totalmente desechable.

Diferencias

Page 26: Git with gifs
Page 27: Git with gifs

Buenas prácticas

Page 28: Git with gifs

• Almacena los cambios actuales en

una pila independiente.

• Te deja en el último commit.

• Puede recuperarse más tarde.

git stash

Page 29: Git with gifs

Cuando lo

descubres...

Page 30: Git with gifs
Page 31: Git with gifs

Cuando lo

controlas...

Page 32: Git with gifs
Page 33: Git with gifs

Y para lo que lo

acabas usando...

Page 34: Git with gifs
Page 35: Git with gifs

• Cuando tenemos algo a medias y

hay que hacer un cambio urgente.

• Cuando no estamos trabajando en

la rama adecuada.

• Para desechar rápido las últimas

modificaciones.

Es útil

Page 36: Git with gifs

• Crea siempre ramas puntuales para hacer

commits ¡Son gratis!

• Haz commits pequeños que abarquen lógica

común ¡También son gratis!

• Configura los merges con --no-ff,

aportan estructura, +info y salud.

Organiza tu trabajo

Page 37: Git with gifs

Evitarás

cosas como...

Page 38: Git with gifs
Page 39: Git with gifs

• Indica el último autor de un

cambio en una línea de código.

• Permite culpar a otro cuando el

código apesta.

git blame

Page 40: Git with gifs

Cuando alguien

va a hacer un

git blame...

Page 41: Git with gifs
Page 42: Git with gifs

...si el autor es un

compañero...

Page 43: Git with gifs
Page 44: Git with gifs

...pero la mayoría de

las veces...

Page 45: Git with gifs
Page 46: Git with gifs

También permite mezclar ramas,

pero reescribe la historia.

git rebase

Page 47: Git with gifs
Page 48: Git with gifs

Mola pero...

Page 49: Git with gifs
Page 50: Git with gifs

No hagas rebase a commits que ya

estén distribuidos.

Podríamos crear una paradoja

espacio-temporal y que el

universo se plegara sobre sí

mismo.

el problema de rebase

Page 51: Git with gifs

Haz caso a Doc,

sabe mucho

del tiempo

Page 52: Git with gifs
Page 53: Git with gifs

• Configura el rebase por defectode

pull (por una historia más

bonita).

• Haz pull siempre antes de push.

pull y push

Page 54: Git with gifs

Evitarás

cosas como...

Page 55: Git with gifs
Page 56: Git with gifs

Y siempre puedes

cagarla...

Page 57: Git with gifs
Page 58: Git with gifs

• git reflog: rebusca

• git reset: reinicia

• git revert: deshaz

Cuando todo se rompe

Page 59: Git with gifs
Page 60: Git with gifs

Seguramente

tenga solución

Page 61: Git with gifs
Page 62: Git with gifs

¡GRACIAS!

Page 63: Git with gifs

¿Preguntas?

Page 64: Git with gifs

https://twitter.com/maguilag

https://github.com/rsierra

http://goo.gl/49vdf (Presentación)