Save 37% off PRO during our Black Friday Sale! »

Manejo de Git en el día a día de un proyecto

5c086974327e7f3da17333e836f1a9ba?s=47 fzberlinches
December 10, 2014

Manejo de Git en el día a día de un proyecto

Presentación utilizada durante la formación sobre Git en la sede de Adesis Netlife en México D.F.

5c086974327e7f3da17333e836f1a9ba?s=128

fzberlinches

December 10, 2014
Tweet

Transcript

  1. Manejo de Git en el día a día de un

    proyecto @felixzapata
  2. Qué hago Desarrollador senior front end y consultor de accesibilidad

    web en . Organizador del grupo meetup . Organizador del grupo meetup . Coorganizador del grupo meetup . Coorganizador del grupo meetup . Aerotranstornado: piloto online P1 y controlador S2 (aspirante a S3) en la red . Adesis Netlife WordPress Madrid Madrid Sass & Compass Accesibilidad Spain AngularJS Madrid VATSIM
  3. La he liado parda

  4. Algo de vocabulario Repositorio: una colección de commits, cada uno

    de los cuales indica cómo estaba antes el directorio de trabajo. Index: zona intermedia entre nuestros commits realizados en local y el repositorio. Directorio de trabajo: nuestro proyecto local (aquel en cuyo interior se encuentra la carpeta .git) . Commit: una foto de nuestro directorio de trabajo en un momento determinado.
  5. Algo de vocabulario Stash: saco donde dejar las cosas con

    las que estoy para ponerme con otras. Rama: línea de desarrollo. Tag: el nombre de un commit. Master: normalmente es la rama principal (y por defecto) en nuestro repositorio. HEAD: una referencia que apunta a la rama activa.
  6. None
  7. Filosofía de Git Haz "commit" con frecuencia. Un "commit" representa

    una idea o cambio.
  8. Creación de un repositorio $ g i t i n

    i t Importante: crear el fichero .gitignore t m p / * l o g / * c o n f i g / d a t a b a s e . y m l c o n f i g / e n v i r o n m e n t s / p r o d u c t i o n . r b Mirar antes los que ya están hechos.
  9. Añadiendo y haciendo commit $ g i t s t

    a t u s # O n b r a n c h m a s t e r # C h a n g e d b u t n o t u p d a t e d : # ( u s e “ g i t a d d < f i l e > . . . ” t o u p d a t e w h a t w i l l b e c o m m i t t e d ) # # m o d i f i e d : R E A D M E # m o d i f i e d : R a k e f i l e # m o d i f i e d : l i b / s i m p l e g i t . r b # n o c h a n g e s a d d e d t o c o m m i t ( u s e “ g i t a d d ” a n d / o r “ g i t c o m m i t - a ” )
  10. Añadiendo y haciendo commit $ g i t a d

    d R a k e f i l e $ g i t s t a t u s # O n b r a n c h m a s t e r # C h a n g e s t o b e c o m m i t t e d : # ( u s e “ g i t r e s e t H E A D < f i l e > . . . ” t o u n s t a g e ) # # m o d i f i e d : R a k e f i l e # # C h a n g e d b u t n o t u p d a t e d : # ( u s e “ g i t a d d < f i l e > . . . ” t o u p d a t e w h a t w i l l b e c o m m i t t e d ) # # m o d i f i e d : R E A D M E # m o d i f i e d : l i b / s i m p l e g i t . r b #
  11. Añadiendo y haciendo commit $ g i t c o

    m m i t - a - m ‘ c o m m i t t i n g a l l c h a n g e s ’
  12. Borrando y renombrando ficheros $ g i t r m

    < f i l e n a m e > $ g i t m v < f i l e n a m e _ o l d > < f i l e n a m e _ n e w > También puedo borrar el fichero del index pero mantenerlo en mi directorio de trabajo: $ g i t r m - - c a c h e d r e a d m e . t x t
  13. ¿Qué ha cambiado? $ g i t d i f

    f m y _ f i l e
  14. Trabajando con ramas

  15. Cambiando entre ramas ¿Cómo cambiarse de rama? $ g i

    t b r a n c h n e w f u n c Crear una rama nueva y situarse en ella $ g i t c h e c k o u t - b n e w f u n c ¿En qué rama estamos? $ g i t b r a n c h m a s t e r * n e w f u n c
  16. Juntando cambios

  17. Merge simple $ g i t m e r g

    e n e w f u n c $ g i t b r a n c h - d n e w f u n c D e l e t e d b r a n c h n e w f u n c .
  18. Resolviendo conflictos

  19. Resolviendo conflictos $ g i t m e r g

    e v e r s i o n i n g A u t o - m e r g e d R a k e f i l e C O N F L I C T ( c o n t e n t ) : M e r g e c o n f l i c t i n R a k e f i l e A u t o m a t i c m e r g e f a i l e d ; f i x c o n f l i c t s a n d t h e n c o m m i t t h e r e s u l t . Esto ayuda: $ g i t m e r g e t o o l
  20. Resolviendo conflictos

  21. Resolviendo conflictos Una zona con conflicto empieza con '<<<<<<<' y

    acaba con '>>>>>>>'. Ambas zonas están divididas por '=======' Tienes que decidir si te quedas con lo que está por encima de '=======', lo que está por debajo, o ponerlo como tú quieres que sea (al fin y al cabo, es el objetivo).
  22. Deshacer un merge $ g i t r e s

    e t - - h a r d H E A D ¿Cómo deshacer otras cosas?
  23. Hacer rebases Diferencias entre rebase y merge

  24. Hacer rebases $ g i t r e b a

    s e m a s t e r F i r s t , r e w i n d i n g h e a d t o r e p l a y y o u r w o r k o n t o p o f i t . . . H E A D i s n o w a t 2 c 0 d 4 d 7 . . . a d d e d l i m i t t o l o g f u n c t i o n A p p l y i n g - a d d e d t o d o o p t i o n s A d d s t r a i l i n g w h i t e s p a c e . . d o t e s t / p a t c h : 1 2 : * a d d w a r n i n g : 1 l i n e a d d s w h i t e s p a c e e r r o r s . W r o t e t r e e 2 d 0 b d 5 4 d c 9 e 4 c 3 9 8 7 6 9 c d c b 5 9 2 5 6 c a 0 3 b b 4 8 2 c c b C o m m i t t e d : b 6 6 9 c 7 8 a c f f a a f d 5 b a 3 4 4 4 9 e 7 f a f 8 8 2 1 7 3 9 4 8 6 4 a A p p l y i n g l i m i t i n g l o g t o 3 0
  25. Hacer rebases e r r o r : p a

    t c h f a i l e d : l i b / s i m p l e g i t . r b : 1 4 e r r o r : l i b / s i m p l e g i t . r b : p a t c h d o e s n o t a p p l y U s i n g i n d e x i n f o t o r e c o n s t r u c t a b a s e t r e e . . . F a l l i n g b a c k t o p a t c h i n g b a s e a n d 3 - w a y m e r g e . . . A u t o - m e r g e d l i b / s i m p l e g i t . r b C O N F L I C T ( c o n t e n t ) : M e r g e c o n f l i c t i n l i b / s i m p l e g i t . r b F a i l e d t o m e r g e i n t h e c h a n g e s . P a t c h f a i l e d a t 0 0 0 2 . W h e n y o u h a v e r e s o l v e d t h i s p r o b l e m r u n “ g i t r e b a s e - - c o n t i n u e ” . I f y o u w o u l d p r e f e r t o s k i p t h i s p a t c h , i n s t e a d r u n “ g i t r e b a s e - - s k i p ” . T o r e s t o r e t h e o r i g i n a l b r a n c h a n d s t o p r e b a s i n g r u n “ g i t r e b a s e - - a b o r t ” .
  26. Stashing $ g i t s t a t u

    s # O n b r a n c h m a s t e r # C h a n g e d b u t n o t u p d a t e d : # ( u s e “ g i t a d d < f i l e > . . . ” t o u p d a t e w h a t w i l l b e c o m m i t t e d ) # # m o d i f i e d : l i b / s i m p l e g i t . r b # n o c h a n g e s a d d e d t o c o m m i t ( u s e “ g i t a d d ” a n d / o r “ g i t c o m m i t - a ” )
  27. Stashing $ g i t s t a s h

    S a v e d w o r k i n g d i r e c t o r y a n d i n d e x s t a t e “ W I P o n m a s t e r : c 1 1 0 d 7 f . . . m a d e t h e l s - t r e e f u n c t i o n r e c u r s i v e a n d l i s t t r e e s ” ( T o r e s t o r e t h e m t y p e “ g i t s t a s h a p p l y ” ) H E A D i s n o w a t c 1 1 0 d 7 f m a d e t h e l s - t r e e f u n c t i o n r e c u r s i v e a n d l i s t t r e e s $ g i t s t a t u s # O n b r a n c h m a s t e r n o t h i n g t o c o m m i t ( w o r k i n g d i r e c t o r y c l e a n )
  28. Stashing ¿Dónde se ha ido? $ g i t s

    t a s h l i s t s t a s h @ { 0 } : W I P o n e x p e r i m e n t : 8 9 e 6 d 1 2 . . . t r y i n g g i t a r c h i v e s t a s h @ { 1 } : W I P o n m a s t e r : c 1 1 0 d 7 f . . . m a d e t h e l s - t r e e f u n c t i o n r e c u r s i v e s t a s h @ { 2 } : W I P o n m a s t e r : c 1 1 0 d 7 f . . . m a d e t h e l s - t r e e f u n c t i o n r e c u r s i v e ¿Cuál es cual? $ g i t s t a s h s h o w s t a s h @ { 1 } l i b / s i m p l e g i t . r b | 4 + + + + 1 f i l e s c h a n g e d , 4 i n s e r t i o n s ( + ) , 0 d e l e t i o n s ( - ) $ g i t s t a s h s h o w s t a s h @ { 2 } l i b / s i m p l e g i t . r b | 8 + + + + + + + + 1 f i l e s c h a n g e d , 8 i n s e r t i o n s ( + ) , 0 d e l e t i o n s ( - )
  29. Stashing Aplico el cambio que quiero $ g i t

    s t a s h a p p l y s t a s h @ { 1 } # O n b r a n c h m a s t e r # C h a n g e d b u t n o t u p d a t e d : # ( u s e “ g i t a d d . . . ” t o u p d a t e w h a t w i l l b e c o m m i t t e d ) # # m o d i f i e d : l i b / s i m p l e g i t . r b # n o c h a n g e s a d d e d t o c o m m i t ( u s e “ g i t a d d ” a n d / o r “ g i t c o m m i t - a ” )
  30. Tagging $ g i t t a g - a

    v 1 . 4 - m ' m y v e r s i o n 1 . 4 ' $ g i t t a g v 0 . 1 v 1 . 3 v 1 . 4
  31. Trabajando con distribuidos

  32. Cloning $ g i t c l o n e

    h t t p : / / g i t . g i t o r i o u s . o r g / p i s t o n / m a i n l i n e . g i t p i s t o n
  33. Fetching and Pulling Me gusta pensar en él como una

    sincronización $ g i t f e t c h o r i g i n Me traigo lo último de la rama story84 $ g i t p u l l o r i g i n / s t o r y 8 4 Me traigo también lo último de la rama story84 $ g i t f e t c h o r i g i n / s t o r y 8 4 Esto último es lo mismo que: g i t m e r g e o r i g i n / s t o r y 8 4
  34. Pushing $ g i t p u s h o

    r i g i n m a s t e r
  35. Multiple Remotes $ g i t r e m o

    t e a d d m y c a p g i t @ g i t h u b . c o m : s c h a c o n / c a p i s t r a n o . g i t $ g i t r e m o t e a d d o f f i c i a l g i t : / / g i t h u b . c o m / j a m i s / c a p i s t r a n o . g i t
  36. Posibles workflows

  37. Central repository model

  38. Dictator and lieutenant model

  39. Integration manager model

  40. Git­flow

  41. Enlaces de interés Try Git: Code School Pro Git, el

    libro oficial de Git Aprende GIT Git Internals: Source code control and beyond Learn Git Branching
  42. Enlaces de interés Git cheatsheet Git: la he liado parda

    Advanced Git Tutorial Introduction to git Dealing with Emergencies in Git Resolving merge conflicts
  43. Enlaces de interés Git Mergetool – Merging With a GUI

    Simple Git workflow Git con git­flow
  44. None
  45. Bonus track The AngularJS commit conventions