Git @ Zauber p r i m e r o s   p a s o s
AgendaPrincipios FundamentalesWorkflows BásicosWorkflows AvanzadosReferencia
PrincipiosFundamentales
Historia del SCM       Envia sus archivos         Merge Manual      Envia sus archivos                         Archivos Su...
Historia del SCM       Envia sus archivos            Merge Manual      Envia sus archivos                            Archi...
Historia del SCM       Envia sus archivos            Merge Manual      Envia sus archivos                            Archi...
Historia del SCM       Envia sus archivos            Merge Manual      Envia sus archivos                            Archi...
Historia del SCM       Envia sus patchs         Merge Semi Automático      Envia sus patchs                              P...
Historia del SCM       Envia sus patchs         Merge Semi Automático      Envia sus patchs                              P...
Historia del SCM       Envia sus patchs         Merge Semi Automático      Envia sus patchs                              P...
Historia del SCM       Envia sus patchs         Merge Semi Automático      Envia sus patchs                              P...
Historia del SCM       Envia sus patchs         Merge Semi Automático      Envia sus patchs                              P...
Historia del SCM       Envia sus patchs         Merge Semi Automático      Envia sus patchs                              P...
Historia del SCM           Local VCS
Historia del SCM                Local VCS                    Pros            Versionado de archivos          Manejo automá...
Historia del SCM                Local VCS                    Pros            Versionado de archivos          Manejo automá...
Historia del SCM                Local VCS                    Pros            Versionado de archivos          Manejo automá...
Historia del SCM                Local VCS                     Pros            Versionado de archivos          Manejo autom...
Historia del SCM                Local VCS                     Pros            Versionado de archivos          Manejo autom...
Historia del SCM          Centralized VCS
Historia del SCM            Centralized VCS                    Pros            Versionado de archivos          Manejo auto...
Historia del SCM            Centralized VCS                    Pros            Versionado de archivos          Manejo auto...
Historia del SCM            Centralized VCS                    Pros            Versionado de archivos          Manejo auto...
Historia del SCM            Centralized VCS                    Pros            Versionado de archivos          Manejo auto...
Historia del SCM            Centralized VCS                     Pros            Versionado de archivos          Manejo aut...
Historia del SCM            Centralized VCS                     Pros            Versionado de archivos          Manejo aut...
Historia del SCM            Centralized VCS                     Pros            Versionado de archivos          Manejo aut...
Historia del SCM          Distributed VCS
Historia del SCM           Distributed VCS                    Pros             Todas las anteriores           Cada Repo es...
Historia del SCM           Distributed VCS                    Pros             Todas las anteriores           Cada Repo es...
Historia del SCM           Distributed VCS                    Pros             Todas las anteriores           Cada Repo es...
Historia del SCM           Distributed VCS                    Pros             Todas las anteriores           Cada Repo es...
Historia del SCM           Distributed VCS                    Pros             Todas las anteriores           Cada Repo es...
Historia del SCM           Distributed VCS                    Pros             Todas las anteriores           Cada Repo es...
Git: Características
Git: CaracterísticasVCS Distribuido
Git: CaracterísticasVCS DistribuidoCasi todas las operaciones son locales
Git: CaracterísticasVCS DistribuidoCasi todas las operaciones son localesIntegridad (cada commit id es un checksumSHA)
Git: CaracterísticasVCS DistribuidoCasi todas las operaciones son localesIntegridad (cada commit id es un checksumSHA)Dífic...
Git: CaracterísticasVCS DistribuidoCasi todas las operaciones son localesIntegridad (cada commit id es un checksumSHA)Dífic...
Git: Características                       Snapshots, not                        Differences   git              Vs.others
Git: Características                         Snapshots, not                          Differences   git              Vs.   ...
Git: Características                         Snapshots, not                          Differences   git                    ...
Git: Características              The Three States
Git: Características Cada archivo puede estaren 3 estados: commited,modified, staged             The Three States
Git: Características Cada archivo puede estaren 3 estados: commited,modified, staged             The Three States  En el wo...
Git: Características Cada archivo puede estaren 3 estados: commited,      En staging viven losmodified, staged             ...
Git: Características Cada archivo puede estaren 3 estados: commited,      En staging viven losmodified, staged             ...
Git: Características Cada archivo puede estaren 3 estados: commited,      En staging viven losmodified, staged             ...
Git: Características Cada archivo puede estaren 3 estados: commited,      En staging viven losmodified, staged             ...
Workflows Básicos
Crear un Repo Local     git init (crea un repo git local para un     directorio)      $ mkdir myrepo      $ cd myrepo     ...
Clonar un Repo           Remoto     git clone (crea un repo local git que es una     copia del repo remoto especificado)   ...
Staging Area
Staging AreaRegistra los archivos a incluir en el próximocommit.
Staging AreaRegistra los archivos a incluir en el próximocommit.Se limpia al realizar un commit
Staging AreaRegistra los archivos a incluir en el próximocommit.Se limpia al realizar un commitGuarda el snapshot del arch...
Add Files to StageA medida que realizo cambios, puedo irmarcando archivos (y su estado) para serincluidos en el próximo co...
Add Files to StageA medida que realizo cambios, puedo irmarcando archivos (y su estado) para serincluidos en el próximo co...
Add Files to StageA medida que realizo cambios, puedo irmarcando archivos (y su estado) para serincluidos en el próximo co...
Add Files to StageA medida que realizo cambios, puedo irmarcando archivos (y su estado) para serincluidos en el próximo co...
Add Files to StageSi después de hacer add, cambiamos elarchivo, git recuerda la primera version$ echo “un cambio” > a$ git...
Add Files to StageSi después de hacer add, cambiamos elarchivo, git recuerda la primera version$ echo “un cambio” > a$ git...
Add Files to StageSi después de hacer add, cambiamos elarchivo, git recuerda la primera version$ echo “un cambio” > a$ git...
Move, Rename, Reset     & Checkout    Move y Rename funcionan de forma similar      $ git mv a a.old      $ git rm a.old  ...
Repository Commit
Repository CommitSe genera a partir de los snapshots del stagingarea
Repository CommitSe genera a partir de los snapshots del stagingareaTodos los commit son locales.
Repository CommitSe genera a partir de los snapshots del stagingareaTodos los commit son locales.Es una estructura que con...
Commit Staged  Al hacer git commit, versionamos los cambios  del staging area en el repo local (commit)   $ git commit -m”...
Commit StagedPodemos hacer un git add y commit, de losarchivos que están tracked, de forma simplecon:$ echo “hola” > b$ gi...
Commit StagedPodemos hacer un git add y commit, de losarchivos que están tracked, de forma simplecon:$ echo “hola” > b$ gi...
Commit StagedPodemos hacer un git add y commit, de losarchivos que están tracked, de forma simplecon:$ echo “hola” > b$ gi...
Reviewing your       ChangesPara ver los cambios en la working copy perono en staging $ git diff # Muestra el diff entre l...
Commit HistoryPara ver la historia de commits. (git log tienemuchas opciones, mirar!) $ git log  commit 204359a005f459908b...
Commit HistoryPara ver la historia de commits. (git log tienemuchas opciones, mirar!) $ git log                           ...
Branches
BranchesTodo commit esta asociado a un branch
BranchesTodo commit esta asociado a un branchExisten remote branches y local branches
BranchesTodo commit esta asociado a un branchExisten remote branches y local branchesEn los remote branches no se puede ha...
BranchesTodo commit esta asociado a un branchExisten remote branches y local branchesEn los remote branches no se puede ha...
Branches
BranchesEs un puntero al último commit del branch.
BranchesEs un puntero al último commit del branch.HEAD es un puntero al branch de la workingcopy.
Local Branches$ git branch testing$ git checkout testing
Local Branches$ git branch testing                          Importante!                         Notar como cada           ...
Local Branches                                               branch master.                                              p...
Local Branches                          puntero a la branch                         del working copy                      ...
Local Branches                           puntero a la branch Crea un branch. No                          del working copyc...
Local Branches                           puntero a la branch Crea un branch. No                          del working copyc...
Local Branches                           puntero a la branch Crea un branch. No                          del working copyc...
Local Branches                           puntero a la branch Crea un branch. No                          del working copyc...
Branch Merging                                                      Fast Forward                                          ...
Branch Merging                                                       Fast Forward                                         ...
Branch Merging                                                      Fast Forward                                          ...
Branch Merging                                                        Fast Forward                                        ...
Branch Merging                  Se parte de un ancestro comúnThree way merge      y se aplican los cambios
Branch Merging                  Se parte de un ancestro comúnThree way merge      y se aplican los cambios                ...
Branch Merging                    Se parte de un ancestro comúnThree way merge        y se aplican los cambios            ...
Rebase Branch                                               merge                                                        m...
Rebase Branch 1. Queremos incluiren nuestro branch los                                                mergecambios del mas...
Rebase Branch 1. Queremos incluiren nuestro branch los                                                mergecambios del mas...
Rebase Branch 1. Queremos incluiren nuestro branch los                                                mergecambios del mas...
Rebase Branch 1. Queremos incluiren nuestro branch los                                                mergecambios del mas...
Remote Repositories
Remote RepositoriesPodemos tener más de un remote repository
Remote RepositoriesPodemos tener más de un remote repositoryAl hacer clone, se define el repositorio remotoorigin. (es un a...
Remote RepositoriesPodemos tener más de un remote repositoryAl hacer clone, se define el repositorio remotoorigin. (es un a...
Remote RepositoriesPodemos tener más de un remote repositoryAl hacer clone, se define el repositorio remotoorigin. (es un a...
Remote Repositoriesgit fetch trae toda la información de unrepositorio remoto (commits, branchs, tags).Actualiza los remot...
Remote RepositoriesPara crear un branch en base un remotebranch (y activar el tracking) [c/ checkout] $ git checkout --tra...
Remote RepositoriesPara crear un branch en base un remotebranch (y activar el tracking) [c/ checkout] $ git checkout --tra...
Tags (Local and       Shared)Es un puntero a un commitlistar los tags$ git tagv0.1v1.3crear un tag$ git tag -a v1.4 -m my ...
WorkflowsAvanzados
Embrace Branches     A diferencias de otros VCC, crear     branches es un proceso liviano que   probablemente hagamos todo...
Embrace BranchesUn branch para cada story.    branch: story-567                       A diferencias de otros VCC, crear   ...
Embrace Branches                                        Un branch para cada issue.Un branch para cada story.              ...
Embrace Branches                                        Un branch para cada issue.Un branch para cada story.              ...
Embrace Branches                                        Un branch para cada issue.Un branch para cada story.              ...
Stash for later¿Que pasa si quiero cambiar de branch y tengo       cambios en mi working copy?
Stash for later¿Que pasa si quiero cambiar de branch y tengo       cambios en mi working copy?                STASH IT!
Stash for later   ¿Que pasa si quiero cambiar de branch y tengo          cambios en mi working copy?                      ...
Stash for later    ¿Que pasa si quiero cambiar de branch y tengo           cambios en mi working copy?                    ...
Amend Fucked      Commits¿Que pasa si hice mal el último commit ?
Amend Fucked      Commits¿Que pasa si hice mal el último commit ?            Amend Commit
Amend Fucked                 Commits        ¿Que pasa si hice mal el último commit ?                      Amend Commit1. H...
Amend Fucked                 Commits        ¿Que pasa si hice mal el último commit ?                      Amend Commit1. H...
Amend Fucked                 Commits        ¿Que pasa si hice mal el último commit ?                      Amend Commit1. H...
Rewrite historySquash Commits                                                 Nos permite juntar commits$ git rebase -i HE...
Rewrite historySquash Commits                                                  Nos permite juntar commits                 ...
Rewrite history   Squash Commits                                                      Nos permite juntar commits          ...
Rewrite history  Filter Branch                                                  Nos permite hacer operaciones             ...
Rewrite history  Filter Branch                                                  Nos permite hacer operaciones             ...
Two commits, one    Working Copy¿Que pasa si necesito 2 commits de un archivo?
Two commits, one    Working Copy¿Que pasa si necesito 2 commits de un archivo?               Partial Staging!
Two commits, one       Working Copy¿Que pasa si necesito 2 commits de un archivo?                Partial Staging!1. git ad...
Two commits, one       Working Copy¿Que pasa si necesito 2 commits de un archivo?                Partial Staging!         ...
Two commits, one       Working Copy¿Que pasa si necesito 2 commits de un archivo?                Partial Staging!         ...
Two commits, one          Working Copy   ¿Que pasa si necesito 2 commits de un archivo?                   Partial Staging!...
Referencia
Referenciagit help (man pages para todos los comandos)Wiki Zauber (proximamente)Pro Git (http://progit.org/book/)Community...
Gracias!Preguntas?
Upcoming SlideShare
Loading in …5
×

Git at-zauber (initial steps)

476 views
394 views

Published on

Introduction to git, as given at Zauber Labs

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
476
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Git at-zauber (initial steps)

    1. 1. Git @ Zauber p r i m e r o s p a s o s
    2. 2. AgendaPrincipios FundamentalesWorkflows BásicosWorkflows AvanzadosReferencia
    3. 3. PrincipiosFundamentales
    4. 4. Historia del SCM Envia sus archivos Merge Manual Envia sus archivos Archivos SueltosFoo Bar
    5. 5. Historia del SCM Envia sus archivos Merge Manual Envia sus archivos Archivos SueltosFoo Bar Contras No hay historia El Merge es Manual
    6. 6. Historia del SCM Envia sus archivos Merge Manual Envia sus archivos Archivos SueltosFoo Bar Contras No hay historia El Merge es Manual
    7. 7. Historia del SCM Envia sus archivos Merge Manual Envia sus archivos Archivos SueltosFoo Bar Contras No hay historia El Merge es Manual
    8. 8. Historia del SCM Envia sus patchs Merge Semi Automático Envia sus patchs Pasaje de PatchsFoo Bar
    9. 9. Historia del SCM Envia sus patchs Merge Semi Automático Envia sus patchs Pasaje de PatchsFoo Bar ProsCon un Patch el merge es más fácil
    10. 10. Historia del SCM Envia sus patchs Merge Semi Automático Envia sus patchs Pasaje de PatchsFoo Bar ProsCon un Patch el merge es más fácil
    11. 11. Historia del SCM Envia sus patchs Merge Semi Automático Envia sus patchs Pasaje de PatchsFoo Bar Pros ContrasCon un Patch el merge es más No hay historia fácil Hay conflictos que no resuelve el merge
    12. 12. Historia del SCM Envia sus patchs Merge Semi Automático Envia sus patchs Pasaje de PatchsFoo Bar Pros ContrasCon un Patch el merge es más No hay historia fácil Hay conflictos que no resuelve el merge
    13. 13. Historia del SCM Envia sus patchs Merge Semi Automático Envia sus patchs Pasaje de PatchsFoo Bar Pros ContrasCon un Patch el merge es más No hay historia fácil Hay conflictos que no resuelve el merge
    14. 14. Historia del SCM Local VCS
    15. 15. Historia del SCM Local VCS Pros Versionado de archivos Manejo automático de merge
    16. 16. Historia del SCM Local VCS Pros Versionado de archivos Manejo automático de merge
    17. 17. Historia del SCM Local VCS Pros Versionado de archivos Manejo automático de merge
    18. 18. Historia del SCM Local VCS Pros Versionado de archivos Manejo automático de merge Contras Dificil Colaboración con otros
    19. 19. Historia del SCM Local VCS Pros Versionado de archivos Manejo automático de merge Contras Dificil Colaboración con otros
    20. 20. Historia del SCM Centralized VCS
    21. 21. Historia del SCM Centralized VCS Pros Versionado de archivos Manejo automático de merge Colaboración con otros
    22. 22. Historia del SCM Centralized VCS Pros Versionado de archivos Manejo automático de merge Colaboración con otros
    23. 23. Historia del SCM Centralized VCS Pros Versionado de archivos Manejo automático de merge Colaboración con otros
    24. 24. Historia del SCM Centralized VCS Pros Versionado de archivos Manejo automático de merge Colaboración con otros
    25. 25. Historia del SCM Centralized VCS Pros Versionado de archivos Manejo automático de merge Colaboración con otros Contras Single Point of Failure Necesita conexion con repositorio para versionar
    26. 26. Historia del SCM Centralized VCS Pros Versionado de archivos Manejo automático de merge Colaboración con otros Contras Single Point of Failure Necesita conexion con repositorio para versionar
    27. 27. Historia del SCM Centralized VCS Pros Versionado de archivos Manejo automático de merge Colaboración con otros Contras Single Point of Failure Necesita conexion con repositorio para versionar
    28. 28. Historia del SCM Distributed VCS
    29. 29. Historia del SCM Distributed VCS Pros Todas las anteriores Cada Repo es un backup Permite Diferentes Workflows
    30. 30. Historia del SCM Distributed VCS Pros Todas las anteriores Cada Repo es un backup Permite Diferentes Workflows
    31. 31. Historia del SCM Distributed VCS Pros Todas las anteriores Cada Repo es un backup Permite Diferentes Workflows
    32. 32. Historia del SCM Distributed VCS Pros Todas las anteriores Cada Repo es un backup Permite Diferentes Workflows
    33. 33. Historia del SCM Distributed VCS Pros Todas las anteriores Cada Repo es un backup Permite Diferentes Workflows Contras Más dificil de usar?
    34. 34. Historia del SCM Distributed VCS Pros Todas las anteriores Cada Repo es un backup Permite Diferentes Workflows Contras Más dificil de usar?
    35. 35. Git: Características
    36. 36. Git: CaracterísticasVCS Distribuido
    37. 37. Git: CaracterísticasVCS DistribuidoCasi todas las operaciones son locales
    38. 38. Git: CaracterísticasVCS DistribuidoCasi todas las operaciones son localesIntegridad (cada commit id es un checksumSHA)
    39. 39. Git: CaracterísticasVCS DistribuidoCasi todas las operaciones son localesIntegridad (cada commit id es un checksumSHA)Díficil de perder información
    40. 40. Git: CaracterísticasVCS DistribuidoCasi todas las operaciones son localesIntegridad (cada commit id es un checksumSHA)Díficil de perder informaciónGuarda Snapshots
    41. 41. Git: Características Snapshots, not Differences git Vs.others
    42. 42. Git: Características Snapshots, not Differences git Vs. Guarda delta de archivos, yothers construye la version x, aplicando todas las diferencias
    43. 43. Git: Características Snapshots, not Differences git Guarda snapshots de archivos modificados y links de archivos no modificados. Vs. Guarda delta de archivos, yothers construye la version x, aplicando todas las diferencias
    44. 44. Git: Características The Three States
    45. 45. Git: Características Cada archivo puede estaren 3 estados: commited,modified, staged The Three States
    46. 46. Git: Características Cada archivo puede estaren 3 estados: commited,modified, staged The Three States En el working copyviven los modified (yuntracked). Es donde se trabaja
    47. 47. Git: Características Cada archivo puede estaren 3 estados: commited, En staging viven losmodified, staged archivos marcados para The Three States el próximo commit En el working copyviven los modified (yuntracked). Es donde se trabaja
    48. 48. Git: Características Cada archivo puede estaren 3 estados: commited, En staging viven losmodified, staged archivos marcados para The Three States el próximo commit En el working copy En el repository,viven los modified (y viven los archivosuntracked). Es donde commited. se trabaja
    49. 49. Git: Características Cada archivo puede estaren 3 estados: commited, En staging viven losmodified, staged archivos marcados para The Three States el próximo commit En el working copy En el repository,viven los modified (y viven los archivosuntracked). Es donde commited. se trabaja Flujo básico:•checkout proyecto•hago cambios•stage files a comitear•commit de stagedfiles.
    50. 50. Git: Características Cada archivo puede estaren 3 estados: commited, En staging viven losmodified, staged archivos marcados para The Three States el próximo commit En el working copy En el repository,viven los modified (y viven los archivosuntracked). Es donde commited. se trabaja Importante! Flujo básico: Si agrego un archivo al•checkout proyecto stage, implica agregarlo•hago cambios tal cual esta.•stage files a comitear Si lo cambio después,•commit de staged esos cambios no van alfiles. commit, a menos que lo vuelva a agregar!
    51. 51. Workflows Básicos
    52. 52. Crear un Repo Local git init (crea un repo git local para un directorio) $ mkdir myrepo $ cd myrepo $ git init Initialized empty Git repository in /Users/cono/myrepo/.git/ Crea un directorio .git con un repo vacio.A diferencia de SVN, solo existe un directorio .git por proyecto
    53. 53. Clonar un Repo Remoto git clone (crea un repo local git que es una copia del repo remoto especificado) $ git clone git@github.com:zaubersoftware/git-connector.git Cloning into git-connector... remote: Counting objects: 200, done. remote: Compressing objects: 100% (106/106), done. remote: Total 200 (delta 38), reused 102 (delta 11) Receiving objects: 100% (200/200), 49.25 KiB, done. Resolving deltas: 100% (38/38), done.git soporta diferentes transportes: ssh, http, git, file.
    54. 54. Staging Area
    55. 55. Staging AreaRegistra los archivos a incluir en el próximocommit.
    56. 56. Staging AreaRegistra los archivos a incluir en el próximocommit.Se limpia al realizar un commit
    57. 57. Staging AreaRegistra los archivos a incluir en el próximocommit.Se limpia al realizar un commitGuarda el snapshot del archivo al momentoen que fue agregado al staging area. (cambiosposteriores no son incluidos, a menos que seagregue otra vez)
    58. 58. Add Files to StageA medida que realizo cambios, puedo irmarcando archivos (y su estado) para serincluidos en el próximo commit$ git status# Untracked files:# (use "git add <file>..." to include in what will be committed)## a$ git add a$ git status# Changes to be committed:# (use "git rm --cached <file>..." to unstage)## new file: a
    59. 59. Add Files to StageA medida que realizo cambios, puedo irmarcando archivos (y su estado) para serincluidos en el próximo commit Muestra archivos: • A commitear (index)$ git status • Tracked con cambios# Untracked files: • Untracked# (use "git add <file>..." to include in what will be committed)## a$ git add a$ git status# Changes to be committed:# (use "git rm --cached <file>..." to unstage)## new file: a
    60. 60. Add Files to StageA medida que realizo cambios, puedo irmarcando archivos (y su estado) para serincluidos en el próximo commit Muestra archivos: • A commitear (index)$ git status • Tracked con cambios# Untracked files: • Untracked# (use "git add <file>..." to include in what will be committed)## a Agregamos un archivo al index. Es$ git add a decir lo agregamos al próximo commit$ git status# Changes to be committed:# (use "git rm --cached <file>..." to unstage)## new file: a
    61. 61. Add Files to StageA medida que realizo cambios, puedo irmarcando archivos (y su estado) para serincluidos en el próximo commit Muestra archivos: • A commitear (index)$ git status • Tracked con cambios# Untracked files: • Untracked# (use "git add <file>..." to include in what will be committed)## a Agregamos un archivo al index. Es$ git add a decir lo agregamos al próximo commit$ git status# Changes to be committed:# (use "git rm --cached <file>..." to unstage)## new file: a Ahora a esta registrado para el próximo commit
    62. 62. Add Files to StageSi después de hacer add, cambiamos elarchivo, git recuerda la primera version$ echo “un cambio” > a$ git status# Changes to be committed:# (use "git rm --cached <file>..." to unstage)## new file: a## Changed but not updated:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in workingdirectory)## modified: a
    63. 63. Add Files to StageSi después de hacer add, cambiamos elarchivo, git recuerda la primera version$ echo “un cambio” > a$ git status# Changes to be committed:# (use "git rm --cached <file>..." to unstage)# Primera version de a. Lo que se# new file: a va a comitear## Changed but not updated:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in workingdirectory)## modified: a
    64. 64. Add Files to StageSi después de hacer add, cambiamos elarchivo, git recuerda la primera version$ echo “un cambio” > a$ git status# Changes to be committed:# (use "git rm --cached <file>..." to unstage)# Primera version de a. Lo que se# new file: a va a comitear## Changed but not updated:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in workingdirectory)# Cambios posteriores. No van al# modified: a commit
    65. 65. Move, Rename, Reset & Checkout Move y Rename funcionan de forma similar $ git mv a a.old $ git rm a.old unstage un archivo (mantiene los cambios en la working copy) $ git reset HEAD a.old Borrar modificaciones locales (dangerous!) $ git checkout aTIP git status te muestra como hacer estos comandos
    66. 66. Repository Commit
    67. 67. Repository CommitSe genera a partir de los snapshots del stagingarea
    68. 68. Repository CommitSe genera a partir de los snapshots del stagingareaTodos los commit son locales.
    69. 69. Repository CommitSe genera a partir de los snapshots del stagingareaTodos los commit son locales.Es una estructura que contiene: snapshots dearchivos comiteados, puntero al commitanterior, metadata.
    70. 70. Commit Staged Al hacer git commit, versionamos los cambios del staging area en el repo local (commit) $ git commit -m”primeros cambios de a” [master (root-commit) 8536b60] primeros cambios 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 aRecordar que el commit es a nuestro repo local!!
    71. 71. Commit StagedPodemos hacer un git add y commit, de losarchivos que están tracked, de forma simplecon:$ echo “hola” > b$ git status# Changed but not updated:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in workingdirectory)## modified: a## Untracked files:# (use "git add <file>..." to include in what will be committed)## b$ git commit -a -m”commit de a y no de b”
    72. 72. Commit StagedPodemos hacer un git add y commit, de losarchivos que están tracked, de forma simplecon:$ echo “hola” > b$ git status# Changed but not updated:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in workingdirectory)# Tracked: a# modified: a Untracked: b## Untracked files:# (use "git add <file>..." to include in what will be committed)## b$ git commit -a -m”commit de a y no de b”
    73. 73. Commit StagedPodemos hacer un git add y commit, de losarchivos que están tracked, de forma simplecon:$ echo “hola” > b$ git status# Changed but not updated:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in workingdirectory)# Tracked: a# modified: a Untracked: b## Untracked files:# (use "git add <file>..." to include in what will be committed)## b Hace un add de$ git commit -a -m”commit de a y no de b” “a” y commit
    74. 74. Reviewing your ChangesPara ver los cambios en la working copy perono en staging $ git diff # Muestra el diff entre la working copy y la staging areaPara ver los cambios entre la staging area y elrepositorio (el próximo commit) $ git diff --staged # Muestra el diff entre la staging area y el HEAD del repositorio
    75. 75. Commit HistoryPara ver la historia de commits. (git log tienemuchas opciones, mirar!) $ git log commit 204359a005f459908b1304a77cced78deda1601e Author: Mariano A. Cortesi <mariano@zaubersoftware.com> Date: Fri Apr 8 20:26:33 2011 -0300 cambios de a commit 8536b60ca6f7a5256e4778b27b6346393f36d9f3 Author: Mariano A. Cortesi <mariano@zaubersoftware.com> Date: Fri Apr 8 17:54:27 2011 -0300 primeros cambios
    76. 76. Commit HistoryPara ver la historia de commits. (git log tienemuchas opciones, mirar!) $ git log El id de un commit 204359a005f459908b1304a77cced78deda1601e commit es su SHA Author: Mariano A. Cortesi <mariano@zaubersoftware.com> Date: Fri Apr 8 20:26:33 2011 -0300 cambios de a commit 8536b60ca6f7a5256e4778b27b6346393f36d9f3 Author: Mariano A. Cortesi <mariano@zaubersoftware.com> Date: Fri Apr 8 17:54:27 2011 -0300 primeros cambios
    77. 77. Branches
    78. 78. BranchesTodo commit esta asociado a un branch
    79. 79. BranchesTodo commit esta asociado a un branchExisten remote branches y local branches
    80. 80. BranchesTodo commit esta asociado a un branchExisten remote branches y local branchesEn los remote branches no se puede hacercommit, son una referencia a un branch de unrepositorio remoto
    81. 81. BranchesTodo commit esta asociado a un branchExisten remote branches y local branchesEn los remote branches no se puede hacercommit, son una referencia a un branch de unrepositorio remotoEl branch default es master (en terminos desvn sería trunk). Se crea en el clone o init.
    82. 82. Branches
    83. 83. BranchesEs un puntero al último commit del branch.
    84. 84. BranchesEs un puntero al último commit del branch.HEAD es un puntero al branch de la workingcopy.
    85. 85. Local Branches$ git branch testing$ git checkout testing
    86. 86. Local Branches$ git branch testing Importante! Notar como cada commit apunta a su padre.$ git checkout testing
    87. 87. Local Branches branch master. puntero al último$ git branch testing commit del branch Importante! Notar como cada commit apunta a su padre.$ git checkout testing
    88. 88. Local Branches puntero a la branch del working copy branch master. puntero al último$ git branch testing commit del branch Importante! Notar como cada commit apunta a su padre.$ git checkout testing
    89. 89. Local Branches puntero a la branch Crea un branch. No del working copycambia el working copy branch master. puntero al último $ git branch testing commit del branch Importante! Notar como cada commit apunta a su padre. $ git checkout testing
    90. 90. Local Branches puntero a la branch Crea un branch. No del working copycambia el working copy branch master. puntero al último $ git branch testing commit del branch Al crear un Importante! branch se crea un Notar como cada nuevo puntero commit apunta a su padre. $ git checkout testing
    91. 91. Local Branches puntero a la branch Crea un branch. No del working copycambia el working copy branch master. puntero al último $ git branch testing commit del branch Al crear un Importante! branch se crea un Notar como cada nuevo puntero Cambia el working commit apunta a sucopy. Lo apunta al padre.branch testing $ git checkout testing
    92. 92. Local Branches puntero a la branch Crea un branch. No del working copycambia el working copy branch master. puntero al último $ git branch testing commit del branch Al crear un Importante! branch se crea un Notar como cada nuevo puntero Cambia el working commit apunta a sucopy. Lo apunta al padre.branch testing $ git checkout testing el checkout cambia el puntero HEAD
    93. 93. Branch Merging Fast Forward Cuando el merge solo implica mover un puntero$ git checkout master$ git merge hotfixUpdating f42c576..3a0874cFast forward README | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)
    94. 94. Branch Merging Fast Forward Cuando el merge solo implica mover un puntero Me paro en el branch adonde quiero mergear$ git checkout master$ git merge hotfixUpdating f42c576..3a0874cFast forward README | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)
    95. 95. Branch Merging Fast Forward Cuando el merge solo implica mover un puntero Me paro en el branch adonde quiero mergear$ git checkout master$ git merge hotfixUpdating f42c576..3a0874cFast forward README | 1 - Indico el branch que quiero mergear 1 files changed, 0 insertions(+), 1 deletions(-)
    96. 96. Branch Merging Fast Forward Cuando el merge solo implica mover un puntero El merge consistió en Me paro en el branch mover el puntero master adonde quiero mergear$ git checkout master$ git merge hotfixUpdating f42c576..3a0874cFast forward README | 1 - Indico el branch que quiero mergear 1 files changed, 0 insertions(+), 1 deletions(-)
    97. 97. Branch Merging Se parte de un ancestro comúnThree way merge y se aplican los cambios
    98. 98. Branch Merging Se parte de un ancestro comúnThree way merge y se aplican los cambios Commit con 2 padres
    99. 99. Branch Merging Se parte de un ancestro comúnThree way merge y se aplican los cambios Commit con 2 padres Si hubo conflictos en el merge. Deben resolverse en el working copy
    100. 100. Rebase Branch merge master experiment$ git checkout experiment$ git rebase master rebaseFirst, rewinding head to replay your work ontop of it...Applying: added staged command
    101. 101. Rebase Branch 1. Queremos incluiren nuestro branch los mergecambios del master master experiment $ git checkout experiment $ git rebase master rebase First, rewinding head to replay your work on top of it... Applying: added staged command
    102. 102. Rebase Branch 1. Queremos incluiren nuestro branch los mergecambios del master master experiment 2. Calcula el patch de cada commit de experiment $ git checkout experiment $ git rebase master rebase First, rewinding head to replay your work on top of it... Applying: added staged command
    103. 103. Rebase Branch 1. Queremos incluiren nuestro branch los mergecambios del master master experiment 2. Calcula el patch de cada commit de experiment $ git checkout experiment $ git rebase master rebase First, rewinding head to replay your work on top of it... Applying: added staged command 3. Aplico los patchs sobre master. uno por uno
    104. 104. Rebase Branch 1. Queremos incluiren nuestro branch los mergecambios del master master experiment 2. Calcula el patch de cada commit de experiment $ git checkout experiment $ git rebase master rebase First, rewinding head to replay your work on top of it... Applying: added staged command Importante!! Genera nuevos commits. No usar con commits pusheados 3. Aplico los patchs sobre master. uno por uno
    105. 105. Remote Repositories
    106. 106. Remote RepositoriesPodemos tener más de un remote repository
    107. 107. Remote RepositoriesPodemos tener más de un remote repositoryAl hacer clone, se define el repositorio remotoorigin. (es un alias, se puede cambiar)
    108. 108. Remote RepositoriesPodemos tener más de un remote repositoryAl hacer clone, se define el repositorio remotoorigin. (es un alias, se puede cambiar)Un remote branch es una referencia de unbranch local de un repositorio remoto.
    109. 109. Remote RepositoriesPodemos tener más de un remote repositoryAl hacer clone, se define el repositorio remotoorigin. (es un alias, se puede cambiar)Un remote branch es una referencia de unbranch local de un repositorio remoto.Tracking Branch: es una local branchrelacionada a un remote branch. (“la sigue” ypuede “actualizarla”). En el clone, master secrea como tracking branch de origin/master.
    110. 110. Remote Repositoriesgit fetch trae toda la información de unrepositorio remoto (commits, branchs, tags).Actualiza los remote branches (no realiza unmerge) $ git fetch From https://git.zaubersoftware.com/zauber/bob b2ed962..982359c master -> origin/masterSi quiere hacer un merge + fetch (trackingbranches): $ git pull From https://git.zaubersoftware.com/zauber/bob b2ed962..982359c master -> origin/master
    111. 111. Remote RepositoriesPara crear un branch en base un remotebranch (y activar el tracking) [c/ checkout] $ git checkout --track origin/serverfix Branch serverfix set up to track remote branch refs/remotes/ origin/serverfix. Switched to a new branch "serverfix"git push envía los cambios de un local branch alrepositorio remoto. Se trata de un merge quesolo puede ser fast forward. $ git push origin master $ git push
    112. 112. Remote RepositoriesPara crear un branch en base un remotebranch (y activar el tracking) [c/ checkout] $ git checkout --track origin/serverfix Branch serverfix set up to track remote branch refs/remotes/ origin/serverfix. Switched to a new branch "serverfix"git push envía los cambios de un local branch alrepositorio remoto. Se trata de un merge quesolo puede ser fast forward. $ git push origin master $ git push solo tracking branches
    113. 113. Tags (Local and Shared)Es un puntero a un commitlistar los tags$ git tagv0.1v1.3crear un tag$ git tag -a v1.4 -m my version 1.4$ git tag -a v1.2 9fceb02subir tags a un remote$ git push origin v1.5$ git push origin --tags
    114. 114. WorkflowsAvanzados
    115. 115. Embrace Branches A diferencias de otros VCC, crear branches es un proceso liviano que probablemente hagamos todos los días. Implica un cambio de concepto
    116. 116. Embrace BranchesUn branch para cada story. branch: story-567 A diferencias de otros VCC, crear branches es un proceso liviano que probablemente hagamos todos los días. Implica un cambio de concepto
    117. 117. Embrace Branches Un branch para cada issue.Un branch para cada story. branch: issue-9596 branch: story-567 A diferencias de otros VCC, crear branches es un proceso liviano que probablemente hagamos todos los días. Implica un cambio de concepto
    118. 118. Embrace Branches Un branch para cada issue.Un branch para cada story. branch: issue-9596 branch: story-567 A diferencias de otros VCC, crear branches es un proceso liviano que probablemente hagamos todos los días. Implica un cambio de concepto Un branch para feature.branch: feature-fb-connect
    119. 119. Embrace Branches Un branch para cada issue.Un branch para cada story. branch: issue-9596 branch: story-567 A diferencias de otros VCC, crear branches es un proceso liviano que probablemente hagamos todos los días. Implica un cambio de concepto Un branch para feature.branch: feature-fb-connect Un branch para probar una idea. branch: cono-idea-loca
    120. 120. Stash for later¿Que pasa si quiero cambiar de branch y tengo cambios en mi working copy?
    121. 121. Stash for later¿Que pasa si quiero cambiar de branch y tengo cambios en mi working copy? STASH IT!
    122. 122. Stash for later ¿Que pasa si quiero cambiar de branch y tengo cambios en mi working copy? STASH IT!$ git stash Saved working directory and index state Saves Working "WIP on master: 049d078 added the index file" Copy & StagingHEAD is now at 049d078 added the index file Area(To restore them type "git stash apply")
    123. 123. Stash for later ¿Que pasa si quiero cambiar de branch y tengo cambios en mi working copy? STASH IT!$ git stash Saved working directory and index state Saves Working "WIP on master: 049d078 added the index file" Copy & StagingHEAD is now at 049d078 added the index file Area(To restore them type "git stash apply")$ git stash apply Applies Stashed ... data to current working copy
    124. 124. Amend Fucked Commits¿Que pasa si hice mal el último commit ?
    125. 125. Amend Fucked Commits¿Que pasa si hice mal el último commit ? Amend Commit
    126. 126. Amend Fucked Commits ¿Que pasa si hice mal el último commit ? Amend Commit1. Hace los cambios en el staging area
    127. 127. Amend Fucked Commits ¿Que pasa si hice mal el último commit ? Amend Commit1. Hace los cambios 2. git commit --amend en el staging area
    128. 128. Amend Fucked Commits ¿Que pasa si hice mal el último commit ? Amend Commit1. Hace los cambios 3. Cambia el 2. git commit --amend en el staging area mensaje de commit
    129. 129. Rewrite historySquash Commits Nos permite juntar commits$ git rebase -i HEAD~3 pick f7f3f6d changed my name a bit squash 310154e updated README formatting and added blame squash a5f4a0d added cat-file
    130. 130. Rewrite historySquash Commits Nos permite juntar commits 1. Hacemos un$ git rebase -i HEAD~3 rebase interactivo de los últimos 3 commits pick f7f3f6d changed my name a bit squash 310154e updated README formatting and added blame squash a5f4a0d added cat-file
    131. 131. Rewrite history Squash Commits Nos permite juntar commits 1. Hacemos un $ git rebase -i HEAD~3 rebase interactivo de los últimos 3 commits 2. Seleccionamos la pick f7f3f6d changed my name a bitopción squash para los squash 310154e updated README formatting and added blameque queremos hacer squash a5f4a0d added cat-file desparecer
    132. 132. Rewrite history Filter Branch Nos permite hacer operaciones sobre cada commit$ git filter-branch --tree-filter rm -f passwords.txt HEADRewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd(21/21)Ref refs/heads/master was rewritten
    133. 133. Rewrite history Filter Branch Nos permite hacer operaciones sobre cada commit$ git filter-branch --tree-filter rm -f passwords.txt HEADRewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd Borramos el archivo(21/21) passwords.txt del repoRef refs/heads/master was rewritten
    134. 134. Two commits, one Working Copy¿Que pasa si necesito 2 commits de un archivo?
    135. 135. Two commits, one Working Copy¿Que pasa si necesito 2 commits de un archivo? Partial Staging!
    136. 136. Two commits, one Working Copy¿Que pasa si necesito 2 commits de un archivo? Partial Staging!1. git add -p
    137. 137. Two commits, one Working Copy¿Que pasa si necesito 2 commits de un archivo? Partial Staging! 2. Elegir los diffs1. git add -p chunks a incluir
    138. 138. Two commits, one Working Copy¿Que pasa si necesito 2 commits de un archivo? Partial Staging! 2. Elegir los diffs1. git add -p 3. Commit del stage chunks a incluir
    139. 139. Two commits, one Working Copy ¿Que pasa si necesito 2 commits de un archivo? Partial Staging! 2. Elegir los diffs 1. git add -p 3. Commit del stage chunks a incluirgit add -i nos permite hacer esto y staging interactivo
    140. 140. Referencia
    141. 141. Referenciagit help (man pages para todos los comandos)Wiki Zauber (proximamente)Pro Git (http://progit.org/book/)Community Book (http://book.git-scm.com/)
    142. 142. Gracias!Preguntas?

    ×