Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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.

fzberlinches

December 10, 2014
Tweet

More Decks by fzberlinches

Other Decks in Technology

Transcript

  1. 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
  2. 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.
  3. 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.
  4. 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.
  5. 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 ” )
  6. 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 #
  7. 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 ’
  8. 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
  9. 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
  10. 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 .
  11. 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
  12. 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).
  13. Deshacer un merge $ g i t r e s

    e t - - h a r d H E A D ¿Cómo deshacer otras cosas?
  14. 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
  15. 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 ” .
  16. 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 ” )
  17. 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 )
  18. 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 ( - )
  19. 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 ” )
  20. 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
  21. 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
  22. 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
  23. Pushing $ g i t p u s h o

    r i g i n m a s t e r
  24. 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
  25. 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
  26. 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
  27. Enlaces de interés Git Mergetool – Merging With a GUI

    Simple Git workflow Git con git­flow