SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
Perder el miedo a Git en 90 minutos

                                     ´
                         Adeodato Simo



                   Zaragoza, 2009-02-20




 Perder el miedo a Git en 90 minutos
Plan para esta hora y media




     • La revolucion de los SCM distribuidos: verdades y mentiras
                  ´
     • SCM distribuidos: cosas a tener en cuenta
     • Por que Git: caracter´sticas interesantes
             ´              ı
     • Pilares basicos de Git
                ´
     • Tour por los comandos mas interesantes
                              ´
     • Preguntas




                Perder el miedo a Git en 90 minutos
´
La revolucion de los SCM distribuidos




     • La gran mentira: La mayor ventaja de los SCM distribuidos es
       que tienes una copia local de la historia, y puedes hacer log y diff
       sin estar conectado.
     • Lo anterior es una caracter´stica conveniente, pero los
                                  ı
       verdaderos beneficios de los SCM distribuidos son:
          • Democratizacion de las herramientas
                          ´
          • Derecho a la intimidad y la higiene




                Perder el miedo a Git en 90 minutos
´
La democratizacion de los SCM




   La metedura de pata de los SCM centralizados: hacer del nivel de
                acceso un discriminador clasista a nivel de herramienta
                       ´          ´
   La pregunta del millon: ¿por que mis contribuidores no pueden utilizar
                las mismas herramientas que yo, y para que puedan
                hacerlo, han de tener mi mismo nivel de acceso?
                                       ´
    Caso ideal: tener acceso es un marron, y no una ventaja. (Tattoo
                that.)




                Perder el miedo a Git en 90 minutos
Nuevo orden de cosas




    • Los SCM distribuidos permiten a cualquier persona desarrollar
      en igualdad de condiciones
    • El como y cuando dar acceso es ahora una cuestion social o
           ´       ´                                 ´
                                 ´
      pol´tica, como siempre debio ser
         ı
    • Para los escepticos que digan: ¿realmente hay tanta diferencia
                   ´
      entre ”svn commit” y ”svn diff — mutt”?
    • Quiza no con Subversion, pero en los SCM distribuidos (y en
           ´
      particular con Git) la diferencia se hace abismal




              Perder el miedo a Git en 90 minutos
El derecho a la intimidad y la higiene




     • En los SCM centralizados:
         • crear ramas ”impone”, pues todas han de ir al repositorio central,
                ´                                            ´
           y seran visibles incluso si son abandonadas despues
         • no hay Ctrl-Z
     • Los SCM distribuidos:
         • permiten el desarrollo en privado
         • hay Ctrl-Z ilimitado en la copia local




               Perder el miedo a Git en 90 minutos
Particularidades de los SCM distribuidos




     • Indivisibilidad del arbol
                           ´
          • no hay checkouts parciales como en SVN
          • hace falta cirug´a y magia para dividir un repositorio en dos (y eso
                            ı
            cuando es posible)
          • pero se pueden ”arrejuntar” repositorios
     • Indivisibilidad de la historia
          • se copia siempre toda la historia del proyecto a la maquina local
                                                                 ´
          • existe funcionalidad para obtener solo una parte, pero el resultado
                                                ´
            tiene limitaciones




                Perder el miedo a Git en 90 minutos
´
¿Por que Git?



     • Anecdota: mi historia y lo que le´ en un blog
         ´                              ı
     • Ventajas:
          •   riqueza
          •   flexibilidad
          •   velocidad
          •   eficiencia espacial
          •                  ´
              nivel de adopcion
     • Sobre la curva de aprendizaje...
          • no es tanto la complejidad de la herramienta
          • como, en muchos aspectos, el cambio de paradigma




                 Perder el miedo a Git en 90 minutos
Git: algunas caracter´sticas
                     ı



     • Disenado a lo Unix
           ˜
          • un ejecutable distinto para cada tarea
          • estos se combinan entre s´ facilmente
            ´                          ı´
          • muchos no se usan normalmente (”plumbing”)
     • Sin miedo a romper paradigmas
          •   el ”index”
          •                       ´
              la cirug´a como accion cotidiana
                      ı
          •   una manera diferente de renombrar ficheros
          •                     ´
              $PAGER por omision
     • Posibilidad de ignorar la magia y utilizarlo como un SCM ordinario




                 Perder el miedo a Git en 90 minutos
Modelo de datos interno



     • Etiquetador ⇒ Tag
     • Flechas ⇒ Branches (flecha roja: HEAD)
     • Grafo ⇒ Commits
          • meta-informacion (incl. padre/s)
                          ´
          • tree
               • blob
               • tree
     • Concepto de ”committish” y ”treeish”
     • La copia de trabajo y su relacion con la rama
                                      ´




                Perder el miedo a Git en 90 minutos
´
Como referirse a los ”committish”




     • Formas basicas:
               ´
         • SHA1: 9448a825ddb13c79a35e438c6d9d6bd485b66b52
         • SHA1 abreviada: 9448a8
         • nombres simbolicos (ramas y tags): HEAD, master, 0.9.2
                       ´
     • Refiriendose a los padres:
            ´
         • HEADˆ (el padre inmediato)
         • HEAD 1 (´dem)
                   ı
         • HEAD 2 (el padre del padre, etc.)
     • Funcionalidad extra: HEAD@two weeks ago




               Perder el miedo a Git en 90 minutos
El index (I): commit en los SCM tradicionales



     • En una copia de trabajo en un SCM tradicional se diferencia
       entre:
         • (a) ficheros que el SCM conoce (via ‘svn add‘)
         • (b) ficheros que el SCM sabe que ha de ignorar
         • (c) ficheros de los que no sabe nada (limbo)
     • La operacion ”commit” automaticamente detecta cambios en los
                 ´                  ´
                                           ´
       ficheros (a), y crea una nueva revision con ellos:

     ‘svn commit‘ <--> (a)
   (b) |-> ignorados por ’’commit’’
   (c) |/




               Perder el miedo a Git en 90 minutos
El index (II): todo es limbo en Git


     • En Git, la operacion commit”no se interesa por el estado de los
                         ´¸
       ficheros en (a):
          • a efectos de commit”, todos los ficheros estan en el estado (c), en
                                                        ´
                          ¸
            el limbo
          • (otras operaciones como status y diff s´ pueden diferenciar entre
                                                   ı
            los tres estados)
     • git commit decide que incluir en la revision mirando en un lugar
                            ´                    ´
       especial... el index

      Git <--> Staging area <--> Limbo
               ------------      -----
                   Index          Working dir




                Perder el miedo a Git en 90 minutos
˜
El index (III): anadiendo cosas al index



     • Con ‘git add‘, todos los cambios a un fichero pasan al index:

          % edit foo.c
          % git add foo.c
          % git commit -m ’Arreglado no s´ qu´ en foo.c’
                                         e   e
     • Cuidado:

          %   edit foo.c (#1)
          %   git add foo.c
          %   edit foo.c (#2)
          %   git commit -m ’Cambios de #1 pero no de #2’




               Perder el miedo a Git en 90 minutos
´
El index (IV): interaccion ‘diff‘ y ‘status‘



      • ‘git diff‘ a secas muestra las diferencias entre la copia de trabajo
        y el ´ndice:
             ı
             % edit foo.c
             % git add foo.c
             % git diff foo.c
             => Diff vac´o!
                        ı
      • Optiones interesantes:
           % git diff --cached # HEAD <--> index
           % git diff HEAD     # HEAD <--> working dir
      • Los tres estados de ‘git status‘




                 Perder el miedo a Git en 90 minutos
El index (y V): consejos y trucos finales




     • Elegir que cambios anadir hunk a hunk:
                ´          ˜
          % git add -p [fichero]
     • Usos del index:
          • revisar codigo, de otros o de uno mismo (anadir al index lo ”ya
                     ´                                ˜
            revisado”)
     • Fingir que el index no existe:
          % git commit -a
          % git diff HEAD




                Perder el miedo a Git en 90 minutos
Trabajar con ramas




     • Publicidad enganosa en SVN: ”Branching is O(1)”
                      ˜
     • Branchear en la justa medidai
     • Comandos:
          •   git branch nueva rama
          •   git checkout otra rama
          •         ´
              (¿que pasa con los non-committed cambios?)
          •   git checkout -b nueva rama2
     • ‘git merge‘: merges vs ”fast forwards”




                 Perder el miedo a Git en 90 minutos
Repositorios locales y remotos




     • Copia inicial (git clone):
          • las ramas remotas se copian a ”origin/¡rama¿”
          • se crea una rama local (normalmente ”master”)
     • Actualizaciones sucesivas (git pull):
          • se reciben los datos, y se actualizan la ”tracking branches”,
            incluyendo la actual
     • Enviar (git push):
          • mapeo rama local <--> remota, y se actualizan
          • $PATH/repo/.git vs $PATH/repo.git




                Perder el miedo a Git en 90 minutos
La cirug´a privada, piedra angular de este SCM
        ı




     • Tambien denominada ”history rewriting”, pero no me gusta ese
             ´
       nombre...
     • ¿Por que privada/en privado?
               ´
         • Consecuencias de la cirug´a
                                    ı
     • Cosas que se pueden hacer:
         •   Cambiar cualquier commit
         •                 ´
             Unir dos o mas commits en uno
         •   O dividir un commit en varios
         •   Transplantar una serie de commits a otra rama




                Perder el miedo a Git en 90 minutos
Integridad en Git y secuelas de la cirug´a
                                        ı



     • Para dar nombres a las cosas, Git usa SHA1:
          • los objetos internos no tienen otro nombre que el SHA1 de su
            contenido
     • Es imposible cambiar algo en el repositorio y no cambiarle el
       nombre: git se quejar´a mucho
                            ı
          • posibilita detectar corrupcion de disco
                                        ´
          • si tienes un tag firmado, toda la historia que conduce a ese tag
            queda verificada
     • La cirug´a renombra todas las cosas que toca, y toda la
               ı
       descendencia de esas cosas




                Perder el miedo a Git en 90 minutos
Herramientas para la cirug´a
                          ı




     • Editar el ultimo commit: git commit –amend
                 ´
     • Editar commits ”enterrados”, unir o dividir commits: git rebase -i
     • Transplantar historia: git rebase, git pull –rebase
     • Desechar commits: git reset, que viene en tres sabores:
          • –soft
          • –mixed
          • –hard (cuidado!)
     • y dos modelos (con y sin argumentos)




                Perder el miedo a Git en 90 minutos
git reset (cont.)




      • Sin argumentos, pone el estado al ultimo commit:
                                          ´
                                        ´
              % git reset => resetea el ındice
              % git reset --hard => desechar todos los
                                    cambios locales
      • Con argumentos, pone el estado al commit especificado:
      • Para solo ”resetear” un fichero...
              ´
          • git checkout FILE (muy intuitivo...)




                Perder el miedo a Git en 90 minutos
Descubriendo git log




     • Cosas basicas:
              ´
         % git log --name-status
         % git log -p
     • El motor de busqueda:
                    ´
         % git log --author=’John Doe’
         % git log --grep=’playlist’
         % git log -S’nombre_de_una_funcion’




              Perder el miedo a Git en 90 minutos
Otros comandos


    %   git   show $committish
    %   git   reflog
    %   git   stash
    %   git   format-patch
    %   git   archive
    %   git   clean
    %   git   gc
    %   git   config

    • Ficheros: /.gitconfig, $REPO/.git/config
    • Herramientas graficas: gitk, gitg, ...
                     ´
    • Otras: git-svn; /bin/git-¡tu comando¿
    • Hooks


               Perder el miedo a Git en 90 minutos
Escribir commit messages




     |   Incluir una l´nea de sumario, corta y
                      ı
     |
     |   Luego una l´nea en blanco, y el resto de la
                    ı
     |   descripci´n, en tantos p´rrafos como haga
                  o              a
     |   falta.

    • ¿Por que as´? ¿Es obligatorio?
             ´ı




              Perder el miedo a Git en 90 minutos
¿Preguntas?




Perder el miedo a Git en 90 minutos

Mais conteúdo relacionado

Semelhante a Perder el miedo a git en 90 minutos

Las reglas que hay que romper para que tu equipo de desarrollo sea el más RÁPIDO
Las reglas que hay que romper para que tu equipo de desarrollo sea el más RÁPIDOLas reglas que hay que romper para que tu equipo de desarrollo sea el más RÁPIDO
Las reglas que hay que romper para que tu equipo de desarrollo sea el más RÁPIDOJavier Abadía
 
Manual de impresión
Manual de impresiónManual de impresión
Manual de impresiónPep Ribalta
 
Conociendo GIT, herramienta para control de versiones
Conociendo GIT, herramienta para control de versionesConociendo GIT, herramienta para control de versiones
Conociendo GIT, herramienta para control de versionesJavier P.
 
Git with gifs
Git with gifsGit with gifs
Git with gifsbetabeers
 
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?Martin Siniawski
 
Reglas de Código Simple
Reglas de Código SimpleReglas de Código Simple
Reglas de Código Simplepsluaces
 
Impresoras3 d tecnologia
Impresoras3 d tecnologiaImpresoras3 d tecnologia
Impresoras3 d tecnologiaITGT
 
026 Estado Del Arte De Mdd Model Driven Development
026 Estado Del Arte De Mdd Model Driven Development026 Estado Del Arte De Mdd Model Driven Development
026 Estado Del Arte De Mdd Model Driven DevelopmentGeneXus
 
Nerdear.la 2018 | Journey to Stability - Cómo reducimos costos y aumentamos l...
Nerdear.la 2018 | Journey to Stability - Cómo reducimos costos y aumentamos l...Nerdear.la 2018 | Journey to Stability - Cómo reducimos costos y aumentamos l...
Nerdear.la 2018 | Journey to Stability - Cómo reducimos costos y aumentamos l...Gustavo Arjones
 
Automatización Continua
Automatización ContinuaAutomatización Continua
Automatización ContinuaDavid Giordano
 
Presentación nuevas técnicas de prototipado rápido Ing Lina María Amaya G IMOCON
Presentación nuevas técnicas de prototipado rápido Ing Lina María Amaya G IMOCONPresentación nuevas técnicas de prototipado rápido Ing Lina María Amaya G IMOCON
Presentación nuevas técnicas de prototipado rápido Ing Lina María Amaya G IMOCONDiseño e Ingeniería
 
Charla SQlite Salta
Charla SQlite SaltaCharla SQlite Salta
Charla SQlite Saltacabero
 
Solid Day - Cloudino
Solid Day - CloudinoSolid Day - Cloudino
Solid Day - CloudinoSoftware Guru
 
9 PASOS PARA GENERAR EL CÓDIGO CNC CON SOLIDWORKS CAM - Easyworks.pdf
9 PASOS PARA GENERAR EL CÓDIGO CNC CON SOLIDWORKS CAM - Easyworks.pdf9 PASOS PARA GENERAR EL CÓDIGO CNC CON SOLIDWORKS CAM - Easyworks.pdf
9 PASOS PARA GENERAR EL CÓDIGO CNC CON SOLIDWORKS CAM - Easyworks.pdfMariano Irizabal Coterillo
 

Semelhante a Perder el miedo a git en 90 minutos (20)

Las reglas que hay que romper para que tu equipo de desarrollo sea el más RÁPIDO
Las reglas que hay que romper para que tu equipo de desarrollo sea el más RÁPIDOLas reglas que hay que romper para que tu equipo de desarrollo sea el más RÁPIDO
Las reglas que hay que romper para que tu equipo de desarrollo sea el más RÁPIDO
 
Manual de impresión
Manual de impresiónManual de impresión
Manual de impresión
 
Conociendo GIT, herramienta para control de versiones
Conociendo GIT, herramienta para control de versionesConociendo GIT, herramienta para control de versiones
Conociendo GIT, herramienta para control de versiones
 
Scrum para uno
Scrum para unoScrum para uno
Scrum para uno
 
Bantaba
BantabaBantaba
Bantaba
 
Git with gifs
Git with gifsGit with gifs
Git with gifs
 
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
 
Deep Learning, Python, C# y Azure
Deep Learning, Python, C# y AzureDeep Learning, Python, C# y Azure
Deep Learning, Python, C# y Azure
 
Reglas de Código Simple
Reglas de Código SimpleReglas de Código Simple
Reglas de Código Simple
 
Impresoras3 d tecnologia
Impresoras3 d tecnologiaImpresoras3 d tecnologia
Impresoras3 d tecnologia
 
026 Estado Del Arte De Mdd Model Driven Development
026 Estado Del Arte De Mdd Model Driven Development026 Estado Del Arte De Mdd Model Driven Development
026 Estado Del Arte De Mdd Model Driven Development
 
Bindiffing patches
Bindiffing patchesBindiffing patches
Bindiffing patches
 
Nerdear.la 2018 | Journey to Stability - Cómo reducimos costos y aumentamos l...
Nerdear.la 2018 | Journey to Stability - Cómo reducimos costos y aumentamos l...Nerdear.la 2018 | Journey to Stability - Cómo reducimos costos y aumentamos l...
Nerdear.la 2018 | Journey to Stability - Cómo reducimos costos y aumentamos l...
 
Automatización Continua
Automatización ContinuaAutomatización Continua
Automatización Continua
 
Presentación nuevas técnicas de prototipado rápido Ing Lina María Amaya G IMOCON
Presentación nuevas técnicas de prototipado rápido Ing Lina María Amaya G IMOCONPresentación nuevas técnicas de prototipado rápido Ing Lina María Amaya G IMOCON
Presentación nuevas técnicas de prototipado rápido Ing Lina María Amaya G IMOCON
 
Charla SQlite Salta
Charla SQlite SaltaCharla SQlite Salta
Charla SQlite Salta
 
Solid Day - Cloudino
Solid Day - CloudinoSolid Day - Cloudino
Solid Day - Cloudino
 
ITI Presentacion Eclipse Day
ITI Presentacion Eclipse DayITI Presentacion Eclipse Day
ITI Presentacion Eclipse Day
 
9 PASOS PARA GENERAR EL CÓDIGO CNC CON SOLIDWORKS CAM - Easyworks.pdf
9 PASOS PARA GENERAR EL CÓDIGO CNC CON SOLIDWORKS CAM - Easyworks.pdf9 PASOS PARA GENERAR EL CÓDIGO CNC CON SOLIDWORKS CAM - Easyworks.pdf
9 PASOS PARA GENERAR EL CÓDIGO CNC CON SOLIDWORKS CAM - Easyworks.pdf
 
Git 101+
Git 101+Git 101+
Git 101+
 

Último

Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 

Último (16)

Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 

Perder el miedo a git en 90 minutos

  • 1. Perder el miedo a Git en 90 minutos ´ Adeodato Simo Zaragoza, 2009-02-20 Perder el miedo a Git en 90 minutos
  • 2. Plan para esta hora y media • La revolucion de los SCM distribuidos: verdades y mentiras ´ • SCM distribuidos: cosas a tener en cuenta • Por que Git: caracter´sticas interesantes ´ ı • Pilares basicos de Git ´ • Tour por los comandos mas interesantes ´ • Preguntas Perder el miedo a Git en 90 minutos
  • 3. ´ La revolucion de los SCM distribuidos • La gran mentira: La mayor ventaja de los SCM distribuidos es que tienes una copia local de la historia, y puedes hacer log y diff sin estar conectado. • Lo anterior es una caracter´stica conveniente, pero los ı verdaderos beneficios de los SCM distribuidos son: • Democratizacion de las herramientas ´ • Derecho a la intimidad y la higiene Perder el miedo a Git en 90 minutos
  • 4. ´ La democratizacion de los SCM La metedura de pata de los SCM centralizados: hacer del nivel de acceso un discriminador clasista a nivel de herramienta ´ ´ La pregunta del millon: ¿por que mis contribuidores no pueden utilizar las mismas herramientas que yo, y para que puedan hacerlo, han de tener mi mismo nivel de acceso? ´ Caso ideal: tener acceso es un marron, y no una ventaja. (Tattoo that.) Perder el miedo a Git en 90 minutos
  • 5. Nuevo orden de cosas • Los SCM distribuidos permiten a cualquier persona desarrollar en igualdad de condiciones • El como y cuando dar acceso es ahora una cuestion social o ´ ´ ´ ´ pol´tica, como siempre debio ser ı • Para los escepticos que digan: ¿realmente hay tanta diferencia ´ entre ”svn commit” y ”svn diff — mutt”? • Quiza no con Subversion, pero en los SCM distribuidos (y en ´ particular con Git) la diferencia se hace abismal Perder el miedo a Git en 90 minutos
  • 6. El derecho a la intimidad y la higiene • En los SCM centralizados: • crear ramas ”impone”, pues todas han de ir al repositorio central, ´ ´ y seran visibles incluso si son abandonadas despues • no hay Ctrl-Z • Los SCM distribuidos: • permiten el desarrollo en privado • hay Ctrl-Z ilimitado en la copia local Perder el miedo a Git en 90 minutos
  • 7. Particularidades de los SCM distribuidos • Indivisibilidad del arbol ´ • no hay checkouts parciales como en SVN • hace falta cirug´a y magia para dividir un repositorio en dos (y eso ı cuando es posible) • pero se pueden ”arrejuntar” repositorios • Indivisibilidad de la historia • se copia siempre toda la historia del proyecto a la maquina local ´ • existe funcionalidad para obtener solo una parte, pero el resultado ´ tiene limitaciones Perder el miedo a Git en 90 minutos
  • 8. ´ ¿Por que Git? • Anecdota: mi historia y lo que le´ en un blog ´ ı • Ventajas: • riqueza • flexibilidad • velocidad • eficiencia espacial • ´ nivel de adopcion • Sobre la curva de aprendizaje... • no es tanto la complejidad de la herramienta • como, en muchos aspectos, el cambio de paradigma Perder el miedo a Git en 90 minutos
  • 9. Git: algunas caracter´sticas ı • Disenado a lo Unix ˜ • un ejecutable distinto para cada tarea • estos se combinan entre s´ facilmente ´ ı´ • muchos no se usan normalmente (”plumbing”) • Sin miedo a romper paradigmas • el ”index” • ´ la cirug´a como accion cotidiana ı • una manera diferente de renombrar ficheros • ´ $PAGER por omision • Posibilidad de ignorar la magia y utilizarlo como un SCM ordinario Perder el miedo a Git en 90 minutos
  • 10. Modelo de datos interno • Etiquetador ⇒ Tag • Flechas ⇒ Branches (flecha roja: HEAD) • Grafo ⇒ Commits • meta-informacion (incl. padre/s) ´ • tree • blob • tree • Concepto de ”committish” y ”treeish” • La copia de trabajo y su relacion con la rama ´ Perder el miedo a Git en 90 minutos
  • 11. ´ Como referirse a los ”committish” • Formas basicas: ´ • SHA1: 9448a825ddb13c79a35e438c6d9d6bd485b66b52 • SHA1 abreviada: 9448a8 • nombres simbolicos (ramas y tags): HEAD, master, 0.9.2 ´ • Refiriendose a los padres: ´ • HEADˆ (el padre inmediato) • HEAD 1 (´dem) ı • HEAD 2 (el padre del padre, etc.) • Funcionalidad extra: HEAD@two weeks ago Perder el miedo a Git en 90 minutos
  • 12. El index (I): commit en los SCM tradicionales • En una copia de trabajo en un SCM tradicional se diferencia entre: • (a) ficheros que el SCM conoce (via ‘svn add‘) • (b) ficheros que el SCM sabe que ha de ignorar • (c) ficheros de los que no sabe nada (limbo) • La operacion ”commit” automaticamente detecta cambios en los ´ ´ ´ ficheros (a), y crea una nueva revision con ellos: ‘svn commit‘ <--> (a) (b) |-> ignorados por ’’commit’’ (c) |/ Perder el miedo a Git en 90 minutos
  • 13. El index (II): todo es limbo en Git • En Git, la operacion commit”no se interesa por el estado de los ´¸ ficheros en (a): • a efectos de commit”, todos los ficheros estan en el estado (c), en ´ ¸ el limbo • (otras operaciones como status y diff s´ pueden diferenciar entre ı los tres estados) • git commit decide que incluir en la revision mirando en un lugar ´ ´ especial... el index Git <--> Staging area <--> Limbo ------------ ----- Index Working dir Perder el miedo a Git en 90 minutos
  • 14. ˜ El index (III): anadiendo cosas al index • Con ‘git add‘, todos los cambios a un fichero pasan al index: % edit foo.c % git add foo.c % git commit -m ’Arreglado no s´ qu´ en foo.c’ e e • Cuidado: % edit foo.c (#1) % git add foo.c % edit foo.c (#2) % git commit -m ’Cambios de #1 pero no de #2’ Perder el miedo a Git en 90 minutos
  • 15. ´ El index (IV): interaccion ‘diff‘ y ‘status‘ • ‘git diff‘ a secas muestra las diferencias entre la copia de trabajo y el ´ndice: ı % edit foo.c % git add foo.c % git diff foo.c => Diff vac´o! ı • Optiones interesantes: % git diff --cached # HEAD <--> index % git diff HEAD # HEAD <--> working dir • Los tres estados de ‘git status‘ Perder el miedo a Git en 90 minutos
  • 16. El index (y V): consejos y trucos finales • Elegir que cambios anadir hunk a hunk: ´ ˜ % git add -p [fichero] • Usos del index: • revisar codigo, de otros o de uno mismo (anadir al index lo ”ya ´ ˜ revisado”) • Fingir que el index no existe: % git commit -a % git diff HEAD Perder el miedo a Git en 90 minutos
  • 17. Trabajar con ramas • Publicidad enganosa en SVN: ”Branching is O(1)” ˜ • Branchear en la justa medidai • Comandos: • git branch nueva rama • git checkout otra rama • ´ (¿que pasa con los non-committed cambios?) • git checkout -b nueva rama2 • ‘git merge‘: merges vs ”fast forwards” Perder el miedo a Git en 90 minutos
  • 18. Repositorios locales y remotos • Copia inicial (git clone): • las ramas remotas se copian a ”origin/¡rama¿” • se crea una rama local (normalmente ”master”) • Actualizaciones sucesivas (git pull): • se reciben los datos, y se actualizan la ”tracking branches”, incluyendo la actual • Enviar (git push): • mapeo rama local <--> remota, y se actualizan • $PATH/repo/.git vs $PATH/repo.git Perder el miedo a Git en 90 minutos
  • 19. La cirug´a privada, piedra angular de este SCM ı • Tambien denominada ”history rewriting”, pero no me gusta ese ´ nombre... • ¿Por que privada/en privado? ´ • Consecuencias de la cirug´a ı • Cosas que se pueden hacer: • Cambiar cualquier commit • ´ Unir dos o mas commits en uno • O dividir un commit en varios • Transplantar una serie de commits a otra rama Perder el miedo a Git en 90 minutos
  • 20. Integridad en Git y secuelas de la cirug´a ı • Para dar nombres a las cosas, Git usa SHA1: • los objetos internos no tienen otro nombre que el SHA1 de su contenido • Es imposible cambiar algo en el repositorio y no cambiarle el nombre: git se quejar´a mucho ı • posibilita detectar corrupcion de disco ´ • si tienes un tag firmado, toda la historia que conduce a ese tag queda verificada • La cirug´a renombra todas las cosas que toca, y toda la ı descendencia de esas cosas Perder el miedo a Git en 90 minutos
  • 21. Herramientas para la cirug´a ı • Editar el ultimo commit: git commit –amend ´ • Editar commits ”enterrados”, unir o dividir commits: git rebase -i • Transplantar historia: git rebase, git pull –rebase • Desechar commits: git reset, que viene en tres sabores: • –soft • –mixed • –hard (cuidado!) • y dos modelos (con y sin argumentos) Perder el miedo a Git en 90 minutos
  • 22. git reset (cont.) • Sin argumentos, pone el estado al ultimo commit: ´ ´ % git reset => resetea el ındice % git reset --hard => desechar todos los cambios locales • Con argumentos, pone el estado al commit especificado: • Para solo ”resetear” un fichero... ´ • git checkout FILE (muy intuitivo...) Perder el miedo a Git en 90 minutos
  • 23. Descubriendo git log • Cosas basicas: ´ % git log --name-status % git log -p • El motor de busqueda: ´ % git log --author=’John Doe’ % git log --grep=’playlist’ % git log -S’nombre_de_una_funcion’ Perder el miedo a Git en 90 minutos
  • 24. Otros comandos % git show $committish % git reflog % git stash % git format-patch % git archive % git clean % git gc % git config • Ficheros: /.gitconfig, $REPO/.git/config • Herramientas graficas: gitk, gitg, ... ´ • Otras: git-svn; /bin/git-¡tu comando¿ • Hooks Perder el miedo a Git en 90 minutos
  • 25. Escribir commit messages | Incluir una l´nea de sumario, corta y ı | | Luego una l´nea en blanco, y el resto de la ı | descripci´n, en tantos p´rrafos como haga o a | falta. • ¿Por que as´? ¿Es obligatorio? ´ı Perder el miedo a Git en 90 minutos
  • 26. ¿Preguntas? Perder el miedo a Git en 90 minutos