Control de versiones con Git

download Control de versiones con Git

of 45

  • date post

    27-Jul-2015
  • Category

    Software

  • view

    82
  • download

    0

Embed Size (px)

Transcript of Control de versiones con Git

1. Control de Versiones con Git Daniel Salas Denegri 2. Control de Versiones Qu es eso y por qu me debera importar? 3. El Problema tesis.doc 1 Ene: creacin del archivo tesis.doc 12 Abr: modificaciones, eliminar contenido 30 Abr: correccin de algunos errorestesis.doc tesis.doc 21 Ago: ajustes de formato 4. El Problema tesis.doc 1 Ene: creacin del archivo tesis.doc 12 Abr: modificaciones, eliminar contenido 30 Abr: correccin de algunos errorestesis.doc tesis.doc 21 Ago: ajustes de formato 2 Nov: necesito un texto eliminado anteriormente No tengo copias pasadas 5. El Problema logo.png 1 Ene: primer logo entregado logo.png 12 Abr: primer cambio 30 Abr: segundo y tercer cambio logo_nuevo. png logo2.png logo_ultimo. png logo.png logo2.png logo_ultimo. png logo.png logo2.png 6. El Problema logo.png 1 Ene: primer logo entregado logo.png 12 Abr: primer cambio 30 Abr: segundo y tercer cambio logo_nuevo. png 1 ao despus: Necesito modificar el logo logo2.png ?Cul es la ltima versin logo_ultimo. png logo.png logo2.png logo_ultimo. png logo.png logo2.png 7. Solucin tesis.doc (v1) 1 Ene: creacin del archivo tesis.doc (v2) 12 Abr: modificaciones, eliminar contenido 30 Abr: correccin de algunos errorestesis.doc (v3) tesis.doc (v4) 21 Ago: ajustes de formato 8. Sistemas de Control de Versiones (VCS) Es un sistema que registra los cambios sobre un conjunto de archivos a lo largo del tiempo, de modo que puedan recuperarse. Estos sistemas utilizan un almacenamiento especial (Repositorio) para cada archivo y cada modificacin hecha por sus autores. 9. Ventajas del VCS Revertir archivos a un estado o versin anterior Comparar cambios a lo largo del tiempo Ver quin es responsable de las modificaciones Medio alternativo de backup del cdigo fuente Permite el desarrollo colaborativo 10. Tipos de VCS Local Computadora Repositorio Archivo A 11. Tipos de VCS Centralizado Computadora 1 Archivo A Computadora 2 Archivo A Servidor Repositorio 12. Tipos de VCS Distribuido Computadora 1 Archivo A Computadora 2 Archivo A Servidor Repositorio Repositorio Repositorio 13. VCS ms utilizados 14. Acerca de Git Sistema de control de versiones distribuido Gratuito, Open Source, multiplataforma Desarrollado por Linus Torvalds (el mismo que cre Linux) Destaca por su rapidez y eficacia Soporta grandes proyectos (Ej. el Kernel de Linux) Dispone de muchas herramientas y servicios en la nube 15. Cmo funciona Git? Versin 1 Versin 2 Versin 3 Versin 4 Versin 5 A B C A1 C1 C2 A2 B1 B2 C3 En otros VCS cada versin es una copia de todo el proyecto B A1 B C2 A2 16. B A1 B C2 A2 Cmo funciona Git? Versin 1 Versin 2 Versin 3 Versin 4 Versin 5 A B C A1 C1 C2 A2 B1 B2 C3 En otros VCS cada versin es una copia de todo el proyecto En Git las versiones se vinculan a modificaciones de los archivos 17. Cmo funciona Git? Una vez instalado Git utiliza una serie de comandos para realizar sus operaciones. Tambin existen herramientas grficas que facilitan su uso. Podemos crear o copiar un repositorio en cualquier directorio o carpeta. El directorio seleccionado se le conoce como directorio de trabajo (Working Directory) Cada archivo creado en el directorio de trabajo puede ser luego incluido en el repositorio. El repositorio se encuentra en una carpeta oculta llamada .git dentro del directorio de trabajo.. pero cuidado con manipular los archivos de ese directorio!! 18. Arquitectura de Git HEAD commit 1 commit 2 commit 3 tree A tree B tree C blob A2 blob B2 blob A1 blob B1 fileA.txt fileA.txt fileB.txt fileA.txt fileB.txt 19. Arquitectura de Git El contenido de cada archivo se almacena en el repositorio en un objeto llamado Blob. Cuando el archivo se modifica, se crea un nuevo Blob. Si dos o ms archivos tienen el mismo contenido (pero diferente nombre) utilizarn el mismo Blob. Similar a las carpetas, el repositorio utiliza los objetos llamados Trees o ramas. Cada Tree lleva una lista de Blobs u otros Trees, incluyendo los nombres de archivo. 20. Arquitectura de Git Cada vez que hay cambios en los archivos y son guardados en el repositorio, se crea un objeto llamado Commit. Un Commit representa un instante del conjunto de cambios ocurridos en el tiempo. Un Commit hace referencia a un Tree que lleva al conjunto sub objetos Tree o Blob. El commit que coincide con los archivos de trabajo actuales lleva un marcador llamado HEAD. 21. Creando Repositorios git init Se crea un directorio .git sin objetos git clone Se copia el repositorio de origen Se crea un directorio .git con los objetos copiados 22. Estados de los archivos Working Directory Staging Area Repository A Untracked Unmodified Modified Staged 23. Estados de los archivos Working Directory Staging Area Repository A Untracked Unmodified Modified Staged add 24. Estados de los archivos Working Directory Staging Area Repository A Untracked Unmodified Modified Staged A 25. Estados de los archivos Working Directory Staging Area Repository A Untracked Unmodified Modified Staged A commit 26. Estados de los archivos Working Directory Staging Area Repository Untracked Unmodified Modified Staged A A1 27. Estados de los archivos Working Directory Staging Area Repository Untracked Unmodified Modified Staged A A1 28. Estados de los archivos Working Directory Staging Area Repository Untracked Unmodified Modified Staged A A1 add 29. Estados de los archivos Working Directory Staging Area Repository Untracked Unmodified Modified Staged A A A1 30. Estados de los archivos Working Directory Staging Area Repository Untracked Unmodified Modified Staged A A A1 commit 31. Estados de los archivos Working Directory Staging Area Repository Untracked Unmodified Modified Staged A A1 A2 32. Repositorios Remotos Local archivo Remoto RepositorioRepositorio push pull commit 33. Branching (ramificaciones) master branches commits o A medida que se van agregando commits al repositorio, se genera una ramificacin o cadena, la cual podemos identificar mediante un branch. o Un branch es un puntero o marcador que se va moviendo en cada commit para marcarlo como el ms reciente. o La ramificacin principal por lo general se le asigna como nombre de branch master. 34. Branching (ramificaciones) branches commits master o A medida que se van agregando commits al repositorio, se genera una ramificacin o cadena, la cual podemos identificar mediante un branch. o Un branch es un puntero o marcador que se va moviendo en cada commit para marcarlo como el ms reciente. o La ramificacin principal por lo general se le asigna como nombre de branch master. 35. Branching (ramificaciones) branches commits master o A medida que se van agregando commits al repositorio, se genera una ramificacin o cadena, la cual podemos identificar mediante un branch. o Un branch es un puntero o marcador que se va moviendo en cada commit para marcarlo como el ms reciente. o La ramificacin principal por lo general se le asigna como nombre de branch master. 36. Branching (ramificaciones) branches commits master Es posible que durante el trabajo que realicemos necesitemos crear una ramificacin alterna (por ejemplo para correcciones o pruebas que pueden o no ser luego utilizadas) 37. Branching (ramificaciones) bugfix branches commits master Git nos permite crear nuevos branch para no interferir con la ramificacin principal. De esta manera podemos realizar modificaciones en ambas sin que uno interfiera con otro 38. Branching (ramificaciones) bugfix branches commits master Git nos permite crear nuevos branch para no interferir con la ramificacin principal. De esta manera podemos realizar modificaciones en ambas sin que uno interfiera con otro 39. Branching (ramificaciones) bugfix branches commits master merge Finalmente si ambas partes ya pueden complementarse podemos combinarlas. Esa operacin tambin se conoce como merge. 40. Acerca de GitHub Servicio gratuito de almacenamiento de cdigo fuente en la nube Fomenta la colaboracin de proyectos abiertos Dispone planes para proyectos privados Dispone de herramientas como seguimiento de errores, wiki, etc. Utilizado por varios proyectos en la Web 41. Documentacin Sitio Oficial de Git git-scm.com git-scm.com/documentation Pro Git Scott Chacon, Apress git-scm.com/book Una gua de Git para usuarios de Windows nathanj.github.io/gitguide/tour.html Un Modelo ideal de Branching nvie.com/posts/a-successful-git-branching-model 42. Software Git para Windows (msysgit) code.google.com/p/msysgit Tortoise Git code.google.com/p/tortoisegit GitHub para Windows windows.github.com SmartGit www.syntevo.com/smartgit 43. Servicios en la Nube GitHub github.com Bitbucket bitbucket.org Google Code code.google.com CodePlex www.codeplex.com