SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
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 :)
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