23
Mini-tutorial de Git Controlando las versiones del código fuente Antonio Ognio [email protected]

Mini-tutorial de git

Embed Size (px)

DESCRIPTION

Mini-tutorial de GIT el sistema distribuído de control de versiones utilizado por el kernel Linux y otros proyectos de código abierto.

Citation preview

Page 1: Mini-tutorial de git

Mini-tutorial de GitControlando las versiones del código fuente

Antonio [email protected]

Page 2: Mini-tutorial de git

Agenda

Mini-tutorial de Git – Antonio Ognio

● ¿Qué es Git?

● Breve historia

● Comandos básicos

● Ejemplos prácticos

● Github

● Conclusiones

Page 3: Mini-tutorial de git

¿Qué es Git?

Mini-tutorial de Git – Antonio Ognio

● 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

Page 4: Mini-tutorial de git

¿Porqué nos podría interesar?

Mini-tutorial de Git – Antonio Ognio

● 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

Page 5: Mini-tutorial de git

Sistema de control de versiones (RCS)

Mini-tutorial de Git – Antonio Ognio

● 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)

Page 6: Mini-tutorial de git

¿Qué otros sistemas de control de versiones hay?

Mini-tutorial de Git – Antonio Ognio

● RCS (el original, de Pardue University luego GNU)

● CVS

● Subversion (SVN)

● Mercurial (hg)

● Bazaar (bzr)

● Visual SourceSafe (Microsoft)

Page 7: Mini-tutorial de git

¿Porqué es “distribuído”?

Mini-tutorial de Git – Antonio Ognio

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

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

● Cualquier copia se puede actualizar contra otra

Page 8: Mini-tutorial de git

Breve Historia

Mini-tutorial de Git – Antonio Ognio

● 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

Page 9: Mini-tutorial de git

Breve Historia (continuación)

Mini-tutorial de Git – Antonio Ognio

● 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...

Page 10: Mini-tutorial de git

¿Porqué Linus tuvo que crear Git?

Mini-tutorial de Git – Antonio Ognio

● 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!

Page 11: Mini-tutorial de git

Comandos básicos

Mini-tutorial de Git – Antonio Ognio

Page 12: Mini-tutorial de git

Comandos básicos

Mini-tutorial de Git – Antonio Ognio

http://ktown.kde.org/~zrusin/git/

Page 13: Mini-tutorial de git

Ejemplos prácticos

Mini-tutorial de Git – Antonio Ognio

● 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

Page 14: Mini-tutorial de git

Iniciar un proyecto

Mini-tutorial de Git – Antonio Ognio

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'

Page 15: Mini-tutorial de git

Ir trabajando por “pedacitos”

Mini-tutorial de Git – Antonio Ognio

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'

Page 16: Mini-tutorial de git

Revisar el trabajo realizado

Mini-tutorial de Git – Antonio Ognio

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

Page 17: Mini-tutorial de git

Corregir errores

Mini-tutorial de Git – Antonio Ognio

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 olvidado2git commit

Page 18: Mini-tutorial de git

Trabajando con un repositorio remoto

Mini-tutorial de Git – Antonio Ognio

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 carpeta2git commit -m 'Nueva revisión con tales cambios'

4. Enviar los cambios de vuelta al repositorio remoto

git push origin master

Page 19: Mini-tutorial de git

Github

Mini-tutorial de Git – Antonio Ognio

● 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 :)

Page 20: Mini-tutorial de git

Github

Mini-tutorial de Git – Antonio Ognio

Page 21: Mini-tutorial de git

Github

Mini-tutorial de Git – Antonio Ognio

Page 22: Mini-tutorial de git

Github

Mini-tutorial de Git – Antonio Ognio

Page 23: Mini-tutorial de git

Conclusiones

Mini-tutorial de Git – Antonio Ognio

● 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