3. El Problema
tesis.doc 1 Ene: creación del archivo
tesis.doc 12 Abr: modificaciones, eliminar contenido
30 Abr: corrección de algunos errorestesis.doc
tesis.doc 21 Ago: ajustes de formato
4. El Problema
tesis.doc 1 Ene: creación del archivo
tesis.doc 12 Abr: modificaciones, eliminar contenido
30 Abr: corrección 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 año después: Necesito
modificar el logo
logo2.png
?¿Cuál es la
última versión
logo_ultimo.
png
logo.png logo2.png
logo_ultimo.
png
logo.png logo2.png
7. Solución
tesis.doc
(v1)
1 Ene: creación del archivo
tesis.doc
(v2)
12 Abr: modificaciones, eliminar contenido
30 Abr: corrección 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 modificación hecha por sus
autores.
9. Ventajas del VCS
Revertir archivos a un estado o versión
anterior
Comparar cambios a lo largo del tiempo
Ver quién es responsable de las
modificaciones
Medio alternativo de backup del código
fuente
Permite el desarrollo colaborativo
15. 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
16. ¿Cómo funciona Git?
Versión 1 Versión 2 Versión 3 Versión 4 Versión 5
A
B
C
A1
C1 C2
A2
B1 B2
C3
En otros VCS cada versión es una copia de todo el proyecto
B
A1
B
C2
A2
17. B
A1
B
C2
A2
¿Cómo funciona Git?
Versión 1 Versión 2 Versión 3 Versión 4 Versión 5
A
B
C
A1
C1 C2
A2
B1 B2
C3
En otros VCS cada versión es una copia de todo el proyecto
En Git las versiones se vinculan a modificaciones de los archivos
18. ¿Cómo funciona Git?
Una vez instalado Git utiliza una serie de
comandos para realizar sus operaciones. También
existen herramientas gráficas 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!!
19. 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
20. 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 más archivos tienen el mismo
contenido (pero diferente nombre) utilizarán
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.
21. 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.
22. 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
23. Estados de los archivos
Working Directory
Staging
Area
Repository
A
Untracked Unmodified Modified Staged
24. Estados de los archivos
Working Directory
Staging
Area
Repository
A
Untracked Unmodified Modified Staged
add
25. Estados de los archivos
Working Directory
Staging
Area
Repository
A
Untracked Unmodified Modified Staged
A
26. Estados de los archivos
Working Directory
Staging
Area
Repository
A
Untracked Unmodified Modified Staged
A
commit
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
29. Estados de los archivos
Working Directory
Staging
Area
Repository
Untracked Unmodified Modified Staged
A A1
add
30. Estados de los archivos
Working Directory
Staging
Area
Repository
Untracked Unmodified Modified Staged
A A A1
31. Estados de los archivos
Working Directory
Staging
Area
Repository
Untracked Unmodified Modified Staged
A A A1
commit
32. Estados de los archivos
Working Directory
Staging
Area
Repository
Untracked Unmodified Modified Staged
A A1
A2
34. Branching (ramificaciones)
master branches
commits
o A medida que se van agregando commits al repositorio, se
genera una ramificación 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 más reciente.
o La ramificación 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 ramificación 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 más reciente.
o La ramificación principal por lo general se le asigna como
nombre de branch master.
36. Branching (ramificaciones)
branches
commits
master
o A medida que se van agregando commits al repositorio, se
genera una ramificación 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 más reciente.
o La ramificación principal por lo general se le asigna como
nombre de branch master.
42. Acerca de GitHub
Servicio gratuito de
almacenamiento de código
fuente en la nube
Fomenta la colaboración de
proyectos abiertos
Dispone planes para proyectos
privados
Dispone de herramientas como
seguimiento de errores, wiki, etc.
Utilizado por varios proyectos en
la Web
43. Documentación
Sitio Oficial de Git
git-scm.com
git-scm.com/documentation
Pro Git – Scott Chacon, Apress
git-scm.com/book
Una guía 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
44. 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
45. Servicios en la Nube
GitHub
github.com
Bitbucket
bitbucket.org
Google Code
code.google.com
CodePlex
www.codeplex.com