GITGIT CourseCourse
Conceptos base de Git
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...
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
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
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.
GITGIT CourseCourse
Características de Git
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.
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
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
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
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
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
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
GITGIT CourseCourse
Manos a la obra
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
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
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>
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>
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
GITGIT CourseCourse
G R A C I A S

Git windows

  • 1.
  • 2.
    GITGIT CourseCourse Conceptos basede 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 laforma 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 basede 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.
  • 6.
  • 7.
    GITGIT CourseCourse Características deGit ● 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
  • 14.
  • 15.
    GITGIT CourseCourse Manos ala 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 ala 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 ala 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 ala 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 ala 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
  • 20.