Clasificación de Conjuntos de Datos Desequilibrados.pptx
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!
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