Mini-tutorial de Git
 Controlando las versiones del código fuente


             Antonio Ognio
          antonio@linux.org.pe
Mini-tutorial de Git – Antonio Ognio


Agenda
  ●   ¿Qué es Git?

  ●   Breve historia

  ●   Comandos básicos

  ●   Ejemplos prácticos

  ●   Github

  ●   Conclusiones
Mini-tutorial de Git – Antonio Ognio


¿Qué es Git?
●   Un sistema distribuído de control de versiones

●   Software libre / Código abierto

●   Cada “clón” es una repositorio completo

    ●   Completo historial de revisiones

    ●   No depende de un repositorio central

●   Crear branches y hacer merge es rápido y fácil
Mini-tutorial de Git – Antonio Ognio


¿Porqué nos podría interesar?
●   Es utilizado por el proyecto del Kernel de Linux

●   Fué escrito por Linus Torvalds (originalmente)

●Es utilizado en proyectos como: Perl, GNOME, Qt, Ruby
on Rails, Android, Wine, etc

●   Esta “de moda” con sitios como Github

●   Ideal para un uso personal
Mini-tutorial de Git – Antonio Ognio


Sistema de control de versiones (RCS)
● Permite llevar cuenta de los cambios de un conjunto de archivos
 digitales en el tiempo

●   Cada versión registrada en el tiempo es una “revisión”

●   Muy utilizado para la gestión de código fuente

●Permite tanto a un desarrollador individual como a un grupo de
programadores gestionar el código de un proyecto

●   Especializados en archivos de texto (generalmente)
Mini-tutorial de Git – Antonio Ognio


¿Qué otros sistemas de control de versiones hay?
●   RCS (el original, de Pardue University luego GNU)

●   CVS

●   Subversion (SVN)

●   Mercurial (hg)

●   Bazaar (bzr)

●   Visual SourceSafe (Microsoft)
Mini-tutorial de Git – Antonio Ognio


¿Porqué es “distribuído”?


●   No requiere un repositorio “central” (como svn)

●   Cada copia o “clón” es autosuficiente y completa

●   Cualquier copia se puede actualizar contra otra
Mini-tutorial de Git – Antonio Ognio


Breve Historia

● El Kernel Linux es el proyecto de código abierto más
grande y con más actividad que existe en el mundo

●En el 2002 Linus Torvalds encontró en BitKeeper, un
producto comercial de la empresa BitMover un RCS
superior y decidió usarlo

● Stallman lo criticó, Alan Cox (Kernel 2.2) se opuso pero
igual se utilizó gracias a una licencia especial para
proyectos libres extendida por Larry McVoy
Mini-tutorial de Git – Antonio Ognio


Breve Historia (continuación)

● En 2005 se eliminó la licencia gratuita de BitKeeper
señalando a Andrew Tridgell (TRAC) de haber hecho
ingeniería reversa (cosa que el desmintió)

● Linus Torvalds tomó el toro por las astas y escribió el
mismo un sistema RCS con lo mejor de SVN, Bitkeeper y
las mejoras necesarias para el kernel

●Luego de 2 semanas de no trabajar en el kernel Linus
crea “GIT” y comienza la historia...
Mini-tutorial de Git – Antonio Ognio


¿Porqué Linus tuvo que crear Git?

●Ni siquiera BitKeeper era lo suficientemente rápido
para las necesidades del kernel como proyecto

●Muchos parches complicados tomaban hasta 30
segundos en aplicarse

●Sincronizar las versiones entre Linus Torvalds y Andrew
Morton (mantenedor de la rama 2.6 demoraba 2 horas!)

●   Se necesitaba algo veloz y distribuído, nace Git!
Mini-tutorial de Git – Antonio Ognio


Comandos básicos
Mini-tutorial de Git – Antonio Ognio


Comandos básicos




         http://ktown.kde.org/~zrusin/git/
Mini-tutorial de Git – Antonio Ognio


Ejemplos prácticos

●   Iniciar un proyecto

●   Ir trabajando por “pedacitos”

●   Revisar el trabajo realizado

●   Corregir errores

●   Trabajando con un repositorio remoto
    Tomado de: http://www.spheredev.org/wiki/Git_for_the_lazy
Mini-tutorial de Git – Antonio Ognio


Iniciar un proyecto
1. Crear una carpeta, entrar a una ya existente o descomprimir un archivo comprimido

cd proyecto
2. Decirle a git que empiece a llevar cuenta de los cambios

git init .
3. Agregar todos los archivos presentes

git add .
4. Crear la revisión inicial

git commit -m 'Revisión inicial'
Mini-tutorial de Git – Antonio Ognio


Ir trabajando por “pedacitos”
1. Ver que archivos han cambiado

git status
2. Ver los cambios en formato de parche (diff)

git diff
3. Agregar a la próxima revisión los archivos mencionados en el paso 1 que deseamos incluir

git add archivo1 archivo2 carpeta1 carpeta2
4. Crear una nueva revisión

git commit -m 'Nueva revisión con tales cambios'
Mini-tutorial de Git – Antonio Ognio


Revisar el trabajo realizado
1. Ver el historial de cambios

git log
2. Ver solo las últimas n (ej. 3) revisiones:

git log –n3
3. Ver cambios de forma detallada

git log --stat --summary
Mini-tutorial de Git – Antonio Ognio


Corregir errores
1. Descartar todos los cambios hechos desde la última revisión

git reset --hard

2. Descartar cambios en un archivo individual (actualizar a la última revisión conocida)

git checkout archivo
3. Corrigiendo la descripción de la última revisión (el último commit)

git commit --amend
4. Incluir algo que debió estar en la última revisión creada

git reset --soft HEAD^
git add olvidado1 olvidado2
git commit
Mini-tutorial de Git – Antonio Ognio


Trabajando con un repositorio remoto
1. Crear un “clón” del repositorio remoto

git clone git://servidor.com/ruta/al/proyecto.git
2. Agregar el origen remoto

git remote add origin git://servidor.com/ruta/al/proyecto.git

3. Hacer cambios y agregar los archivos modificados a una nueva revisión

git add archivo1 archivo2 carpeta1 carpeta2
git commit -m 'Nueva revisión con tales cambios'
4. Enviar los cambios de vuelta al repositorio remoto

git push origin master
Mini-tutorial de Git – Antonio Ognio


Github

●   Sitio web de hospedaje de proyectos usando git

●   Plan básico (gratuito) + otros planes pagados
    ● 300 MB de almacenamiento para proyectos




●Permite hacer “fork” con facilidad y luego solicitar
al dueño del repo original que haga “pull”

●   Una “red social” para programadores :)
Mini-tutorial de Git – Antonio Ognio


Github
Mini-tutorial de Git – Antonio Ognio


Github
Mini-tutorial de Git – Antonio Ognio


Github
Mini-tutorial de Git – Antonio Ognio


Conclusiones
  ● Git es una herramienta rápida, eficiente y moderna
  para el control de versiones de proyectos con archivos
  digitales sean o no código fuente

  ●Git permite flujos de trabajo distribuídos en los que
  no tiene porque existir un repositorio central

  ●Linus Torvalds creó Git de acuerdo a las necesidades
  del kernel pero ofreció una gran herramienta a la
  comunidad en general

Mini-tutorial de git

  • 1.
    Mini-tutorial de Git Controlando las versiones del código fuente Antonio Ognio antonio@linux.org.pe
  • 2.
    Mini-tutorial de Git– Antonio Ognio Agenda ● ¿Qué es Git? ● Breve historia ● Comandos básicos ● Ejemplos prácticos ● Github ● Conclusiones
  • 3.
    Mini-tutorial de Git– Antonio Ognio ¿Qué es Git? ● Un sistema distribuído de control de versiones ● Software libre / Código abierto ● Cada “clón” es una repositorio completo ● Completo historial de revisiones ● No depende de un repositorio central ● Crear branches y hacer merge es rápido y fácil
  • 4.
    Mini-tutorial de Git– Antonio Ognio ¿Porqué nos podría interesar? ● Es utilizado por el proyecto del Kernel de Linux ● Fué escrito por Linus Torvalds (originalmente) ●Es utilizado en proyectos como: Perl, GNOME, Qt, Ruby on Rails, Android, Wine, etc ● Esta “de moda” con sitios como Github ● Ideal para un uso personal
  • 5.
    Mini-tutorial de Git– Antonio Ognio Sistema de control de versiones (RCS) ● Permite llevar cuenta de los cambios de un conjunto de archivos digitales en el tiempo ● Cada versión registrada en el tiempo es una “revisión” ● Muy utilizado para la gestión de código fuente ●Permite tanto a un desarrollador individual como a un grupo de programadores gestionar el código de un proyecto ● Especializados en archivos de texto (generalmente)
  • 6.
    Mini-tutorial de Git– Antonio Ognio ¿Qué otros sistemas de control de versiones hay? ● RCS (el original, de Pardue University luego GNU) ● CVS ● Subversion (SVN) ● Mercurial (hg) ● Bazaar (bzr) ● Visual SourceSafe (Microsoft)
  • 7.
    Mini-tutorial de Git– Antonio Ognio ¿Porqué es “distribuído”? ● No requiere un repositorio “central” (como svn) ● Cada copia o “clón” es autosuficiente y completa ● Cualquier copia se puede actualizar contra otra
  • 8.
    Mini-tutorial de Git– Antonio Ognio Breve Historia ● El Kernel Linux es el proyecto de código abierto más grande y con más actividad que existe en el mundo ●En el 2002 Linus Torvalds encontró en BitKeeper, un producto comercial de la empresa BitMover un RCS superior y decidió usarlo ● Stallman lo criticó, Alan Cox (Kernel 2.2) se opuso pero igual se utilizó gracias a una licencia especial para proyectos libres extendida por Larry McVoy
  • 9.
    Mini-tutorial de Git– Antonio Ognio Breve Historia (continuación) ● En 2005 se eliminó la licencia gratuita de BitKeeper señalando a Andrew Tridgell (TRAC) de haber hecho ingeniería reversa (cosa que el desmintió) ● Linus Torvalds tomó el toro por las astas y escribió el mismo un sistema RCS con lo mejor de SVN, Bitkeeper y las mejoras necesarias para el kernel ●Luego de 2 semanas de no trabajar en el kernel Linus crea “GIT” y comienza la historia...
  • 10.
    Mini-tutorial de Git– Antonio Ognio ¿Porqué Linus tuvo que crear Git? ●Ni siquiera BitKeeper era lo suficientemente rápido para las necesidades del kernel como proyecto ●Muchos parches complicados tomaban hasta 30 segundos en aplicarse ●Sincronizar las versiones entre Linus Torvalds y Andrew Morton (mantenedor de la rama 2.6 demoraba 2 horas!) ● Se necesitaba algo veloz y distribuído, nace Git!
  • 11.
    Mini-tutorial de Git– Antonio Ognio Comandos básicos
  • 12.
    Mini-tutorial de Git– Antonio Ognio Comandos básicos http://ktown.kde.org/~zrusin/git/
  • 13.
    Mini-tutorial de Git– Antonio Ognio Ejemplos prácticos ● Iniciar un proyecto ● Ir trabajando por “pedacitos” ● Revisar el trabajo realizado ● Corregir errores ● Trabajando con un repositorio remoto Tomado de: http://www.spheredev.org/wiki/Git_for_the_lazy
  • 14.
    Mini-tutorial de Git– Antonio Ognio Iniciar un proyecto 1. Crear una carpeta, entrar a una ya existente o descomprimir un archivo comprimido cd proyecto 2. Decirle a git que empiece a llevar cuenta de los cambios git init . 3. Agregar todos los archivos presentes git add . 4. Crear la revisión inicial git commit -m 'Revisión inicial'
  • 15.
    Mini-tutorial de Git– Antonio Ognio Ir trabajando por “pedacitos” 1. Ver que archivos han cambiado git status 2. Ver los cambios en formato de parche (diff) git diff 3. Agregar a la próxima revisión los archivos mencionados en el paso 1 que deseamos incluir git add archivo1 archivo2 carpeta1 carpeta2 4. Crear una nueva revisión git commit -m 'Nueva revisión con tales cambios'
  • 16.
    Mini-tutorial de Git– Antonio Ognio Revisar el trabajo realizado 1. Ver el historial de cambios git log 2. Ver solo las últimas n (ej. 3) revisiones: git log –n3 3. Ver cambios de forma detallada git log --stat --summary
  • 17.
    Mini-tutorial de Git– Antonio Ognio Corregir errores 1. Descartar todos los cambios hechos desde la última revisión git reset --hard 2. Descartar cambios en un archivo individual (actualizar a la última revisión conocida) git checkout archivo 3. Corrigiendo la descripción de la última revisión (el último commit) git commit --amend 4. Incluir algo que debió estar en la última revisión creada git reset --soft HEAD^ git add olvidado1 olvidado2 git commit
  • 18.
    Mini-tutorial de Git– Antonio Ognio Trabajando con un repositorio remoto 1. Crear un “clón” del repositorio remoto git clone git://servidor.com/ruta/al/proyecto.git 2. Agregar el origen remoto git remote add origin git://servidor.com/ruta/al/proyecto.git 3. Hacer cambios y agregar los archivos modificados a una nueva revisión git add archivo1 archivo2 carpeta1 carpeta2 git commit -m 'Nueva revisión con tales cambios' 4. Enviar los cambios de vuelta al repositorio remoto git push origin master
  • 19.
    Mini-tutorial de Git– Antonio Ognio Github ● Sitio web de hospedaje de proyectos usando git ● Plan básico (gratuito) + otros planes pagados ● 300 MB de almacenamiento para proyectos ●Permite hacer “fork” con facilidad y luego solicitar al dueño del repo original que haga “pull” ● Una “red social” para programadores :)
  • 20.
    Mini-tutorial de Git– Antonio Ognio Github
  • 21.
    Mini-tutorial de Git– Antonio Ognio Github
  • 22.
    Mini-tutorial de Git– Antonio Ognio Github
  • 23.
    Mini-tutorial de Git– Antonio Ognio Conclusiones ● Git es una herramienta rápida, eficiente y moderna para el control de versiones de proyectos con archivos digitales sean o no código fuente ●Git permite flujos de trabajo distribuídos en los que no tiene porque existir un repositorio central ●Linus Torvalds creó Git de acuerdo a las necesidades del kernel pero ofreció una gran herramienta a la comunidad en general