Git
     Alfonso Alba
     @aalbagarcia
aalbagarcia@gmail.com
Ramas y flujo de
               trabajo
•   Demo:
    •   Entender el gráfico que nos da gitx
    •   Flujos merge y rebase
    •   Ejemplo de flujo de trabajo con diferentes ramas:
        •   Versiones
        •   Corrección de bugs
        •   Feature branches
    •   Comandos: git branch, git rebase, git tag, gitx
Trabajando en equipo

• Repositorios remotos
 • github o servicios similares
 • gitolite
 • ¿Dropbox?
Trabajando en equipo
  •      ¿Dropbox?
         •   git remote add origin ~/Dropbox/proyecto

                          Dropbox




pepito                                       menganito
Trabajando en equipo
  •      ¿Dropbox?
         •   git remote add origin ~/Dropbox/proyecto

                          Dropbox




pepito       git push                        menganito
Trabajando en equipo
  •      ¿Dropbox?
         •   git remote add origin ~/Dropbox/proyecto

                          Dropbox




pepito                                       menganito
Trabajando en equipo
  •      ¿Dropbox?
         •   git remote add origin ~/Dropbox/proyecto

                          Dropbox




pepito                                       menganito
Trabajando en equipo
  •      ¿Dropbox?
         •   git remote add origin ~/Dropbox/proyecto

                          Dropbox




pepito                              git commit   menganito
Trabajando en equipo
  •      ¿Dropbox?
         •   git remote add origin ~/Dropbox/proyecto

                          Dropbox




pepito                              git push   menganito
Trabajando en equipo
  •      ¿Dropbox?
         •   git remote add origin ~/Dropbox/proyecto

                            Dropbox
                      decide qué pasa con el
                           repositorio




pepito                                         menganito
Trabajo en equipo


• Github y servicios similares
Trabajo en equipo:
         gitolite

• https://github.com/sitaramc/gitolite
• Hosting de repositorios git por SSH
Trabajo en equipo:
              gitolite
•   Características:
    •   ACLs de acceso a los repositorios
        •   A nivel de repositorio
        •   A nivel de rama, tag, fichero y directorio
    •   Uso de una única cuenta en el servidor que facilita
        acceso a múltiples usuarios mediante claves privadas
    •   No se necesita acceso root para instalar si ya se
        tiene git, perl y ssh instalados
Trabajo en equipo:
         gitolite
• Inconvenientes:
 • Infraestructura: administración y
    mantenimiento de una máquina con
    acceso SSH
  • Gestión de las claves privadas de los
    usuarios
Trabajo en equipo:
       flujos

• Git es tan flexible que permite
  implementar casi cualquier flujo de
  trabajo que podáis necesitar
Trabajo en equipo:
      flujos
       repositorio
          clon
         maestro
Trabajo en equipo:
      flujos
       repositorio
         maestro




                     clon
Trabajo en equipo:
      flujos
       repositorio
         maestro




                           clon
                     tag/featureXXX
Trabajo en equipo:
      flujos
           repositorio
             maestro




                               clon
                         tag/featureXXX

  git request-pull
Trabajo en equipo:
      flujos
           repositorio
             maestro




                               clon
                         tag/featureXXX

  git request-pull
Trabajo en equipo:
      flujos
             repositorio
               maestro
          tag/featureXXX




                           clon


  git request-pull
Trabajo en equipo:
      flujos
       repositorio
         maestro




                     clon
Trabajo en equipo:
      flujos
         repositorio
           maestro
      tag/featureXXX




                       clon
Lecturas recomendadas
• http://git-scm.com/book
• http://think-like-a-git.net/
• http://www.randyfay.com/node/89
• http://www.randyfay.com/node/91
• http://www-cs-students.stanford.edu/
  ~blynn/gitmagic/
  (gracias a @NSStudent)
¡Gracias!



      @aalbagarcia
 aalbagarcia@gmail.com

Git

  • 1.
    Git Alfonso Alba @aalbagarcia aalbagarcia@gmail.com
  • 2.
    Ramas y flujode trabajo • Demo: • Entender el gráfico que nos da gitx • Flujos merge y rebase • Ejemplo de flujo de trabajo con diferentes ramas: • Versiones • Corrección de bugs • Feature branches • Comandos: git branch, git rebase, git tag, gitx
  • 3.
    Trabajando en equipo •Repositorios remotos • github o servicios similares • gitolite • ¿Dropbox?
  • 4.
    Trabajando en equipo • ¿Dropbox? • git remote add origin ~/Dropbox/proyecto Dropbox pepito menganito
  • 5.
    Trabajando en equipo • ¿Dropbox? • git remote add origin ~/Dropbox/proyecto Dropbox pepito git push menganito
  • 6.
    Trabajando en equipo • ¿Dropbox? • git remote add origin ~/Dropbox/proyecto Dropbox pepito menganito
  • 7.
    Trabajando en equipo • ¿Dropbox? • git remote add origin ~/Dropbox/proyecto Dropbox pepito menganito
  • 8.
    Trabajando en equipo • ¿Dropbox? • git remote add origin ~/Dropbox/proyecto Dropbox pepito git commit menganito
  • 9.
    Trabajando en equipo • ¿Dropbox? • git remote add origin ~/Dropbox/proyecto Dropbox pepito git push menganito
  • 10.
    Trabajando en equipo • ¿Dropbox? • git remote add origin ~/Dropbox/proyecto Dropbox decide qué pasa con el repositorio pepito menganito
  • 11.
    Trabajo en equipo •Github y servicios similares
  • 12.
    Trabajo en equipo: gitolite • https://github.com/sitaramc/gitolite • Hosting de repositorios git por SSH
  • 13.
    Trabajo en equipo: gitolite • Características: • ACLs de acceso a los repositorios • A nivel de repositorio • A nivel de rama, tag, fichero y directorio • Uso de una única cuenta en el servidor que facilita acceso a múltiples usuarios mediante claves privadas • No se necesita acceso root para instalar si ya se tiene git, perl y ssh instalados
  • 14.
    Trabajo en equipo: gitolite • Inconvenientes: • Infraestructura: administración y mantenimiento de una máquina con acceso SSH • Gestión de las claves privadas de los usuarios
  • 15.
    Trabajo en equipo: flujos • Git es tan flexible que permite implementar casi cualquier flujo de trabajo que podáis necesitar
  • 16.
    Trabajo en equipo: flujos repositorio clon maestro
  • 17.
    Trabajo en equipo: flujos repositorio maestro clon
  • 18.
    Trabajo en equipo: flujos repositorio maestro clon tag/featureXXX
  • 19.
    Trabajo en equipo: flujos repositorio maestro clon tag/featureXXX git request-pull
  • 20.
    Trabajo en equipo: flujos repositorio maestro clon tag/featureXXX git request-pull
  • 21.
    Trabajo en equipo: flujos repositorio maestro tag/featureXXX clon git request-pull
  • 22.
    Trabajo en equipo: flujos repositorio maestro clon
  • 23.
    Trabajo en equipo: flujos repositorio maestro tag/featureXXX clon
  • 24.
    Lecturas recomendadas • http://git-scm.com/book •http://think-like-a-git.net/ • http://www.randyfay.com/node/89 • http://www.randyfay.com/node/91 • http://www-cs-students.stanford.edu/ ~blynn/gitmagic/ (gracias a @NSStudent)
  • 25.
    ¡Gracias! @aalbagarcia aalbagarcia@gmail.com