2. GITGIT CourseCourse
Conceptos base de Git
●
Repositorios centralizados
●
SVN / TFS / etc
●
El 'working copy' solo tiene una instantánea del repositorio
en un momento dado.
●
Cualquier petición o cambio de información debe ser
trasladada al servidor para su resolución.
●
Diff
●
Compare
●
History
●
Branch
●
Merge
●
etc...
3. GITGIT CourseCourse
●
Repositorios distribuidos (GIT)
●
Repo local = repo remoto
● Contiene todos los elementos.
● Se añaden dos capas más a la estructura.
●
Repositorio local completo
● Stage / index
● Se admiten muchos repositorios remotos.
Son un elemento más del entorno distribuido.
Conceptos base de Git
4. GITGIT CourseCourse
●
HEAD
●
Es la forma que tiene GIT de referirse a la rama
(branch) + commit en el que estamos posicionados.
● En cualquier momento podemos situarnos en otro
commit (punto en el tiempo) de una rama
concreta.
Conceptos base de Git
5. GITGIT CourseCourse
Conceptos base de Git
●
Realidades
●
La curva de aprendizaje de GIT es pronunciada.
● Requiere entre uno y dos años (según @thinklikeagit).
● Lo mismo, se puede conseguir de varias formas distintas.
7. GITGIT CourseCourse
Características de Git
● Branching ● Los branches están a nuestro
servicio.
● Podemos realizar spikes dentro
del código de producción.
● Creamos un branch por cada
Tarea en nuestra historia, e
incluso por cada elemento dentro
de la tarea.
● El master solo recibirá código de
calidad y finalizado. Nunca verá
los pasos fallidos o las pruebas
realizadas.
8. GITGIT CourseCourse
● Branching
● Todo es local
● Prácticamente todo en GIT es
trabajo local.
– Ver un diff
– Historia de un fichero
– Hacer commit de cambios
– Mergear ramas
– Obtener revisiones de ficheros
– Cambiar de ramas/branches
● Solo hay 3 comandos principales
que hablan con un repositorio
central.
Características de Git
9. GITGIT CourseCourse
● Branching
● Todo es local
● Es rápido
● Es uno de los objetivos primarios
del equipo de desarrollo de GIT.
● Números con el repositorio de
Django
Características de Git
10. GITGIT CourseCourse
● Branching
● Todo es local
● Es rápido
● Es pequeño
● Git es realmente bueno
conservando espacio en disco.
● Comprime con Zlib.
● Todo en GIT son diff's y punteros.
● Un clone de Git es ligeramente
mayor que un Checkout de SVN
Características de Git
11. GITGIT CourseCourse
● Branching
● Todo es local
● Es rápido
● Es pequeño
● El index
● También llamado el Stage
● Ofrece una gran versatilidad y
control sobre lo que se desea
commitear.
● Podemos usarlo o no.
Características de Git
12. GITGIT CourseCourse
● Branching
● Todo es local
● Es rápido
● Es pequeño
● El index
● Es Distribuido
● Solo existen copias completas del
repositorio.
● No hay un punto único de fallo.
Características de Git
13. GITGIT CourseCourse
● Branching
● Todo es local
● Es rápido
● Es pequeño
● El index
● Es distribuido
● Distintos Workflows
● Admite practicamente cualquier
tipo de Workflow.
– Centralizados
– Administrados
● Un manager gestiona los
commits.
– Sub-Administrados
● SubManagers gestionan los
commits de los developers.
● Un manager gestiona los
commits de los
submanagers.
Características de Git
15. GITGIT CourseCourse
Manos a la obra
● Git Extensions
http://code.google.com/p/gitextensions/
● Git Source Control Provider
http://visualstudiogallery.msdn.microsoft.com
/63a7e40d-4d71-4fbb-a23b-d262124b8f4c
16. GITGIT CourseCourse
Manos a la obra
● Inicializar un repositorio
git init <directory>
● Añadir cambios del working dir al index
git add -all [<file>]
● Añadir cambios del index al repositorio
git commit -m “<message>”
git commit -a (realiza los dos pasos en uno solo)
● Ver estado/diferencias
git diff [--cached] / git status
17. GITGIT CourseCourse
Manos a la obra
● Ramas
– Una rama es una referencia a un commit.
– Forman parte del flujo normal de trabajo.
● Ver ramas
git branch / git branch -r / git branch -a
● Crear ramas
git branch <rama> / git checkout -b <rama>
● Renombrar y Borrar ramas
git branch -m <nombreActual> <nuevoNombre>
git branch -d/-D <rama>
18. GITGIT CourseCourse
Manos a la obra
● Fusionar distintas ramas.
– Git decide el algoritmo de fusión adecuado:
Fast-Forward merge / 3-Way Merge
– La fusión siempre se realiza a la rama actual.
git merge <rama>
git merge –no-ff <rama>
● Crear ramas
git branch <rama> / git checkout -b <rama>
● Renombrar y Borrar ramas
git branch -m <nombreActual> <nuevoNombre>
git branch -d/-D <rama>
19. GITGIT CourseCourse
Manos a la obra
● Añadir un repositorio remoto
git remote add <name> <url>
● Recoger cambios del remoto
git pull <name> [<rama>]
● Enviar a un remoto
git push <name> [<rama>]
git push –all <name> (Todas las ramas locales)
● Ver estado/diferencias
git diff [--cached] / git status