Git & Github.
Nacho Martín
Git
Sistema de control
   de versiones
Sistema de control
   de versiones
   Distribuido
Ordenador 1   Servidor


  fichero      versión 3



              versión 2

Ordenador 2

              versión 1
  fichero
Ordenador 1


                fichero



               versión 3



               versión 2



               versión 1




Ordenador 2                 Ordenador 3


  fichero                      fichero



 versión 3                   versión 3



 versión 2                   versión 2



 versión 1                   versión 1
Ventajas
(y desventajas)
Muy rápido
Ramas fáciles
Flexible
Más difícil
¿Más difícil?
git init

                       o
git clone https://github.com/symfony/symfony.git
echo "hola mundo" > saludo
echo "hola mundo" > saludo
git status
echo "hola mundo" > saludo
git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what
will be committed)
#
# saludo
nothing added to commit but untracked files
present (use "git add" to track)
echo "hola mundo" > saludo
git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what
will be committed)
#
# saludo
nothing added to commit but untracked files
present (use "git add" to track)
echo "hola mundo" > saludo
git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what
will be committed)
#
# saludo
nothing added to commit but untracked files
present (use "git add" to track)
git add saludo
git add saludo
git status
git add saludo
git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: saludo
#
git commit -m "Commit inicial"
git commit -m "Commit inicial"

[master (root-commit) df5839d] Commit inicial
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 saludo
git commit -m "Commit inicial"

[master (root-commit) df5839d] Commit inicial
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 saludo

git log
git commit -m "Commit inicial"

[master (root-commit) df5839d] Commit inicial
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 saludo

git log

commit df5839d78e7b9c14672ca722c80f2a5a897ebfba
Author: Nacho Martín <nitram.ohcan@gmail.com>
Date: Tue Nov 8 14:43:38 2011 +0100

  Commit inicial
git commit -m "Commit inicial"

[master (root-commit) df5839d] Commit inicial
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 saludo

git log

commit df5839d78e7b9c14672ca722c80f2a5a897ebfba
Author: Nacho Martín <nitram.ohcan@gmail.com>
Date: Tue Nov 8 14:43:38 2011 +0100

  Commit inicial
git commit -m "Commit inicial"

[master (root-commit) df5839d] Commit inicial
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 saludo

git log

commit df5839d78e7b9c14672ca722c80f2a5a897ebfba
Author: Nacho Martín <nitram.ohcan@gmail.com>
Date: Tue Nov 8 14:43:38 2011 +0100

  Commit inicial
git commit -m "Commit inicial"

[master (root-commit) df5839d] Commit inicial
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 saludo

git log

commit df5839d78e7b9c14672ca722c80f2a5a897ebfba
Author: Nacho Martín <nitram.ohcan@gmail.com>
Date: Tue Nov 8 14:43:38 2011 +0100

  Commit inicial

gitk      o   GitX
                                 master
echo "como va todo" >> saludo

    Cambios sin commitear
     master   Commit inicial
echo "como va todo" >> saludo

    Cambios sin commitear
     master   Commit inicial

git add saludo
git commit -m "Amplio saludo"

     master   Amplio saludo
    Commit inicial
echo "como va todo" >> saludo

    Cambios sin commitear
     master   Commit inicial


git commit -a -m "Amplio saludo"

     master   Amplio saludo
    Commit inicial
echo "como va todo" >> saludo

    Cambios sin commitear
      master   Commit inicial
                   Solo para ficheros
                   ya trackeados
git commit -a -m "Amplio saludo"

      master   Amplio saludo
    Commit inicial
master
master   Amplio saludo
Commit inicial ( df5839d78e7... )
master   Amplio saludo
    Commit inicial ( df5839d78e7... )

git checkout df5839

     master   Amplio saludo
    Commit inicial
master    Amplio saludo
    Commit inicial ( df5839d78e7... )

git checkout df5839

     master    Amplio saludo
    Commit inicial

git checkout master

      master

    Commit inicial ( df5839d78e7... )
Alicia                              Github


git remote add origin git://github.com/user/repo.git


                                         remotes/origin/master




        master
Alicia                    Github
git fetch origin




     remotes/origin/master   remotes/origin/master




     master
Alicia                             Github
git fetch origin
git merge origin/master


     master   remotes/origin/master   remotes/origin/master
Alicia                                     Github
git fetch origin
git merge origin/master               }   git pull origin master



     master   remotes/origin/master           remotes/origin/master
Alicia        Github




     master




                remotes/origin/master
Alicia                               Github

git push origin master




        master   remotes/origin/master     remotes/origin/master
svn update        git pull


svn update -r     git checkout


svn add archivo   git add archivo


                  git commit -a -m
svn commit -m
                  git push
Ramas
git checkout -b facebook




     master   facebook
2 commits más tarde...




     facebook




     master
git checkout master




     facebook




     master
git checkout master
git merge facebook




     master   facebook
git checkout master
git merge facebook
git branch -d facebook




     master
facebook




master
facebook




master
git checkout master




     facebook




     master
arreglamos bug en master (y hacemos commit)




          facebook




          master
git checkout facebook




          facebook




          master
git merge master




          master   facebook
facebook




master
git rebase master




           facebook




           master
meld
En el tintero...



git rm <fichero>
git mv <fichero> <destino>
git reset d5f64567 [--hard]
git tag version-1.0 d5f64567
git cherry-pick
git submodule
Symfony2 ♥ Git
bin/vendors



deps                 deps.lock
deps
  [symfony]
    git=http://github.com/symfony/symfony.git
    version=v2.0.5
                                    prioritario
  deps.lock
  symfony 7f21a5e9792f892166a550bb5579




                      {
                          git clone <repositorio>
bin/vendors install       git fetch origin
                          git reset --hard <version>
Github
Repo
          Fork!
                       MiRepo

                        Work


                       MiRepo'

        Pull request
Repo'
¿PARA QUÉ?



    http://www.flickr.com/photos/deadwords/2473829859/
¿Preguntas?
Gracias
 nitram.ohcan@gmail.com
 @nacmartin


      limenius.com

Presentacion git

  • 1.
  • 2.
  • 3.
    Sistema de control de versiones
  • 4.
    Sistema de control de versiones Distribuido
  • 5.
    Ordenador 1 Servidor fichero versión 3 versión 2 Ordenador 2 versión 1 fichero
  • 6.
    Ordenador 1 fichero versión 3 versión 2 versión 1 Ordenador 2 Ordenador 3 fichero fichero versión 3 versión 3 versión 2 versión 2 versión 1 versión 1
  • 7.
  • 8.
  • 10.
  • 12.
  • 14.
  • 15.
  • 17.
    git init o git clone https://github.com/symfony/symfony.git
  • 18.
  • 19.
    echo "hola mundo"> saludo git status
  • 20.
    echo "hola mundo"> saludo git status # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # saludo nothing added to commit but untracked files present (use "git add" to track)
  • 21.
    echo "hola mundo"> saludo git status # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # saludo nothing added to commit but untracked files present (use "git add" to track)
  • 22.
    echo "hola mundo"> saludo git status # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # saludo nothing added to commit but untracked files present (use "git add" to track)
  • 23.
  • 24.
  • 25.
    git add saludo gitstatus # On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: saludo #
  • 26.
    git commit -m"Commit inicial"
  • 27.
    git commit -m"Commit inicial" [master (root-commit) df5839d] Commit inicial 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 saludo
  • 28.
    git commit -m"Commit inicial" [master (root-commit) df5839d] Commit inicial 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 saludo git log
  • 29.
    git commit -m"Commit inicial" [master (root-commit) df5839d] Commit inicial 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 saludo git log commit df5839d78e7b9c14672ca722c80f2a5a897ebfba Author: Nacho Martín <nitram.ohcan@gmail.com> Date: Tue Nov 8 14:43:38 2011 +0100 Commit inicial
  • 30.
    git commit -m"Commit inicial" [master (root-commit) df5839d] Commit inicial 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 saludo git log commit df5839d78e7b9c14672ca722c80f2a5a897ebfba Author: Nacho Martín <nitram.ohcan@gmail.com> Date: Tue Nov 8 14:43:38 2011 +0100 Commit inicial
  • 31.
    git commit -m"Commit inicial" [master (root-commit) df5839d] Commit inicial 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 saludo git log commit df5839d78e7b9c14672ca722c80f2a5a897ebfba Author: Nacho Martín <nitram.ohcan@gmail.com> Date: Tue Nov 8 14:43:38 2011 +0100 Commit inicial
  • 32.
    git commit -m"Commit inicial" [master (root-commit) df5839d] Commit inicial 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 saludo git log commit df5839d78e7b9c14672ca722c80f2a5a897ebfba Author: Nacho Martín <nitram.ohcan@gmail.com> Date: Tue Nov 8 14:43:38 2011 +0100 Commit inicial gitk o GitX master
  • 33.
    echo "como vatodo" >> saludo Cambios sin commitear master Commit inicial
  • 34.
    echo "como vatodo" >> saludo Cambios sin commitear master Commit inicial git add saludo git commit -m "Amplio saludo" master Amplio saludo Commit inicial
  • 35.
    echo "como vatodo" >> saludo Cambios sin commitear master Commit inicial git commit -a -m "Amplio saludo" master Amplio saludo Commit inicial
  • 36.
    echo "como vatodo" >> saludo Cambios sin commitear master Commit inicial Solo para ficheros ya trackeados git commit -a -m "Amplio saludo" master Amplio saludo Commit inicial
  • 37.
  • 38.
    master Amplio saludo Commit inicial ( df5839d78e7... )
  • 39.
    master Amplio saludo Commit inicial ( df5839d78e7... ) git checkout df5839 master Amplio saludo Commit inicial
  • 40.
    master Amplio saludo Commit inicial ( df5839d78e7... ) git checkout df5839 master Amplio saludo Commit inicial git checkout master master Commit inicial ( df5839d78e7... )
  • 42.
    Alicia Github git remote add origin git://github.com/user/repo.git remotes/origin/master master
  • 43.
    Alicia Github git fetch origin remotes/origin/master remotes/origin/master master
  • 44.
    Alicia Github git fetch origin git merge origin/master master remotes/origin/master remotes/origin/master
  • 45.
    Alicia Github git fetch origin git merge origin/master } git pull origin master master remotes/origin/master remotes/origin/master
  • 46.
    Alicia Github master remotes/origin/master
  • 47.
    Alicia Github git push origin master master remotes/origin/master remotes/origin/master
  • 48.
    svn update git pull svn update -r git checkout svn add archivo git add archivo git commit -a -m svn commit -m git push
  • 49.
  • 50.
    git checkout -bfacebook master facebook
  • 51.
    2 commits mástarde... facebook master
  • 52.
    git checkout master facebook master
  • 53.
    git checkout master gitmerge facebook master facebook
  • 54.
    git checkout master gitmerge facebook git branch -d facebook master
  • 55.
  • 56.
  • 57.
    git checkout master facebook master
  • 58.
    arreglamos bug enmaster (y hacemos commit) facebook master
  • 59.
    git checkout facebook facebook master
  • 60.
    git merge master master facebook
  • 61.
  • 62.
    git rebase master facebook master
  • 63.
  • 64.
    En el tintero... gitrm <fichero> git mv <fichero> <destino> git reset d5f64567 [--hard] git tag version-1.0 d5f64567 git cherry-pick git submodule
  • 65.
  • 66.
  • 67.
    deps [symfony] git=http://github.com/symfony/symfony.git version=v2.0.5 prioritario deps.lock symfony 7f21a5e9792f892166a550bb5579 { git clone <repositorio> bin/vendors install git fetch origin git reset --hard <version>
  • 68.
  • 78.
    Repo Fork! MiRepo Work MiRepo' Pull request Repo'
  • 81.
    ¿PARA QUÉ? http://www.flickr.com/photos/deadwords/2473829859/
  • 82.
  • 83.