Control de versiones con Git
-
Upload
daniel-salas-denegri -
Category
Software
-
view
100 -
download
1
Transcript of Control de versiones con Git
El Problematesis.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
El Problematesis.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
El Problemalogo.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
El Problemalogo.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
Solucióntesis.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
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.
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
Tipos de VCS Distribuido
Computadora 1
Archivo A
Computadora 2
Archivo A
Servidor
Repositorio
Repositorio
Repositorio
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
¿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
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
¿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!!
Arquitectura de GitH
EA
D
commit 1
commit 2
commit 3
tree A
tree B
tree C
blob A2
blob B2
blob A1
blob B1
fileA.txt
fileA.txtfileB.txt
fileA.txtfileB.txt
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.
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.
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
Estados de los archivos
Working DirectoryStaging
AreaRepositor
y
A
UntrackedUnmodifie
dModified Staged
Estados de los archivos
Working DirectoryStaging
AreaRepositor
y
A
UntrackedUnmodifie
dModified Staged
add
Estados de los archivos
Working DirectoryStaging
AreaRepositor
y
A
UntrackedUnmodifie
dModified Staged
A
Estados de los archivos
Working DirectoryStaging
AreaRepositor
y
A
UntrackedUnmodifie
dModified Staged
A
commit
Estados de los archivos
Working DirectoryStaging
AreaRepositor
y
UntrackedUnmodifie
dModified Staged
A A1
Estados de los archivos
Working DirectoryStaging
AreaRepositor
y
UntrackedUnmodifie
dModified Staged
A A1
Estados de los archivos
Working DirectoryStaging
AreaRepositor
y
UntrackedUnmodifie
dModified Staged
A A1
add
Estados de los archivos
Working DirectoryStaging
AreaRepositor
y
UntrackedUnmodifie
dModified Staged
A A A1
Estados de los archivos
Working DirectoryStaging
AreaRepositor
y
UntrackedUnmodifie
dModified Staged
A A A1
commit
Estados de los archivos
Working DirectoryStaging
AreaRepositor
y
UntrackedUnmodifie
dModified Staged
A A1
A2
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.
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.
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.
Branching (ramificaciones)
branches
commits
master
Es posible que durante el trabajo que realicemos necesitemos crear una ramificación alterna (por ejemplo para correcciones o pruebas que pueden o no ser luego utilizadas)
Branching (ramificaciones)
bugfix
branches
commits
master
Git nos permite crear nuevos branch para no interferir con la ramificación principal. De esta manera podemos realizar modificaciones en ambas sin que uno interfiera con otro
Branching (ramificaciones)
bugfix
branches
commits
master
Git nos permite crear nuevos branch para no interferir con la ramificación principal. De esta manera podemos realizar modificaciones en ambas sin que uno interfiera con otro
Branching (ramificaciones)
bugfix
branches
commits
master
merge
Finalmente si ambas partes ya pueden complementarse podemos combinarlas. Esa operación también se conoce como merge.
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
Documentación Sitio Oficial de Git
git-scm.comgit-scm.com/documentation
Pro Git – Scott Chacon, Apressgit-scm.com/book
Una guía de Git para usuarios de Windowsnathanj.github.io/gitguide/tour.html
Un Modelo ideal de Branchingnvie.com/posts/a-successful-git-branching-model
Software Git para Windows (msysgit)
code.google.com/p/msysgit
Tortoise Gitcode.google.com/p/tortoisegit
GitHub para Windowswindows.github.com
SmartGitwww.syntevo.com/smartgit
Servicios en la Nube GitHub
github.com
Bitbucketbitbucket.org
Google Codecode.google.com
CodePlexwww.codeplex.com