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

El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 

Último (20)

El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 

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