Introduccion a Git: Un Sistema de control de versiones ...bien hecho.
-
Upload
phamnguyet -
Category
Documents
-
view
243 -
download
0
Transcript of Introduccion a Git: Un Sistema de control de versiones ...bien hecho.
![Page 1: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/1.jpg)
Git
Introduccion a Git:
Un Sistema de control de versiones
...bien hecho.
Gabriel Saldañ[email protected]
http://blog.nethazard.net
Atribución
![Page 2: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/2.jpg)
¿Qué es Git?
Un sistema de control de versiones distribuido. No depende de acceso a la red o un repositorio
central. Enfocado a la velocidad, uso practico y manejo de
proyectos grandes. Creado por Linus Torvalds, el creador del núcleo
Linux.
![Page 3: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/3.jpg)
Cualidades de Git
Diseñado para manejar proyectos grandes. Es extremadamente rápido. Autentificacion criptográfica del historial. Formato de archivo muy sencillo y compacto. 100% distribuido. Se puede sincronizar por cualquier medio.
![Page 4: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/4.jpg)
Centralizado vs Distribuido
![Page 5: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/5.jpg)
Centralizado
Cayusa: www.flickr.com/photos/cayusa
![Page 6: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/6.jpg)
Centralizado
Todos deben conectarse a un servidor central.
No puedes trabajar sin conexion.
Politicas de escritura. Los cambios afectan a
todos.
![Page 7: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/7.jpg)
Centralizado
Crear ramas es muy costoso, tardado o tedioso.
Las ramas afectan a todos porque son globales. Necesitarias politicas de nomenclaturas para no estorbar a otros.
Casi no envias cambios. Te esperas a que tengas algo estable para subirlo al repositorio.
Nunca haces algo estable a la primera.
![Page 9: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/9.jpg)
Distribuido
Todos son igual de importantes. Se puede trabajar sin conexion. Debes ganar confianza y confiar en otros. Los cambios solo te afectan a ti.
![Page 10: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/10.jpg)
Distribuido Colaboración
Realiza cambios sin afectar a los demás.Experimenta y ramifica el código a tu gusto.
Confía en tu informaciónsin tener que confiar en todos los demás.sin tener que pedir permisos de escriturasin depender de tu servidor o hosting del repositorio.
No hay un punto débil central, y la información se replica de forma natural.
![Page 11: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/11.jpg)
¿Cómo funciona?
Comenzamos con nuestro proyecto en un repositorio
![Page 12: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/12.jpg)
¿Cómo funciona?
Luego alguien hace una copia de nuestro proyecto
![Page 13: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/13.jpg)
¿Cómo funciona?
Cada desarrollador puede seguir trabajando individualmente
![Page 14: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/14.jpg)
¿Cómo funciona?
Los cambios de cada uno no afectan al otro
![Page 15: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/15.jpg)
¿Cómo funciona?
Luego, el desarrollador principal jala los cambios del otro desarrollador
![Page 16: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/16.jpg)
¿Cómo funciona?
Y los mezcla con su trabajo.
![Page 17: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/17.jpg)
¿Cómo funciona?
Finalmente, el segundo desarrollador jala los nuevos cambios del primero, con todo integrado.
![Page 18: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/18.jpg)
Confianza
Jfneier: www.flickr.com/photos/jfchenier
![Page 19: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/19.jpg)
Confianza
Todos son tontos. Solo unos cuantos saben programar bien.
Solo acepto cambios de mis amigos de confianza. Tus cambios son mas limpios. Siempre habrá un repositorio de mayor confianza.
![Page 20: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/20.jpg)
Ramas
Crear ramas del código es fácil y sencillo. Crear ramas fomenta la experimentación y
creatividad. Las ramas solo te afectan a ti. Normalmente se tienen 2, 3 o hasta 15 ramas o más. Merges son muy sencillos de realizar.
![Page 21: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/21.jpg)
Desempeño
La velocidad en el desempeño es muy importante. No debe estorbar o frenar tu ritmo de trabajo. Los merges deben ser rápidos y sencillos. Deben
tomar menos de un segundo.
![Page 22: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/22.jpg)
Contenido
Git controla contenido, no archivos. Se puede borrar, renombrar, mover sin tener que
avisarle a Git. Y el historial se mantiene! Puedes ver el historial de una función desde su
inicio, aunque haya cambiado de un archivo a otro.
![Page 23: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/23.jpg)
Git es para grandes
Linux kernel tiene más de 22,000 archivos. Ha usado Git los ultimos dos años, haciendo 4.5
merges al día. Mostrar las diferencias de todo el kernel, 74,000
commits, toman aprox. 7 segundos (cold cache) 2.3 seg. (warm cache).
El repositorio en CVS del Mozilla Project es de 3GB, en Subversion es de 12GB en formato fsfs. En Git es de 300 Mb.
![Page 24: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/24.jpg)
¿Quienes usan Git? El Linux kernel Ruby on Rails Perl X.org / Cairo Wine Beryl Gnome Android VLC
![Page 25: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/25.jpg)
Obtener GitDebian
aptitude install git-core
Fedora
yum install git
Gentoo
emerge dev-util/git
OpenSUSE
yum install git
Ubuntu
aptitude install git-core
Mac OS X
port install git-core
![Page 26: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/26.jpg)
Usando GitCrear un repositorio
cd project/
git init #Inicializa el repositorio.
git add . #Agrega todos los archivos al repositorio.
Realizar cambios
git status #Consulta lo que ha cambiado
git commit -a -m “commit message” #Guarda todos tus cambios
Crear ramasgit branch experimento_unogit checkout experimento_uno
Hacer mergesgit checkout mastergit merge expermiento_uno
Revisar historialgit log
![Page 27: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/27.jpg)
Usando Git
Regresar a la version anteriorgit reset HEAD~1
Traer cambios de un repositorio externo:#trae y mezcla los cambios de repositorio en un USB.
git pull /media/usbdisk/project.git
#agrega un repositorio externo para compartir cambios con un amigo
git remote add friend file:///net/friend/git/project
# Trae los cambios del repositorio externo sin mezclarlos
$ git fetch friend
![Page 28: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/28.jpg)
Usando Git
Aplica parches recibidos en archivos .patch
git apply < ../p/foo.patch git commit -a
Crea un repositorio vacío para un webserver.mkdir my-repo.git
cd my-repo.git
git --bare init
chmod a+x hooks/post-update # this is needed for HTTP transport
![Page 29: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/29.jpg)
Usando Git Muestra las diferencias entre dos ramas git diff origin..master
Crea un archivo .patch de los cambios realizados git diff origin..master > my.patch
Obten un diffstat de los cambios hechos pero no guardados
git diff --stat HEAD
Aplica el 4° ultimo parche de la rama “otra” a la rama actual.
git cherry-pick otra~3
![Page 30: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/30.jpg)
Herramientas
Gitk, una herramienta visual para ver el historial del repositorio.
![Page 31: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/31.jpg)
Herramientas
Gittool, una interfaz visual para ver los cambios realizados y guardar los cambios.
![Page 32: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/32.jpg)
Interfaces Web
gitweb implementación en Perl mantenida por Kay Sievers. Se usa en kernel.org
wit implementación en Python mantenida por Christian Meder.
gitarella implementación en Ruby mantenida por Diego Petten
gitphp implementación en PHP por Zack Bartel cgit – implementación en C por Lars Hjemli
![Page 33: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/33.jpg)
Git y Subversion
SVN checkoutgit svn checkout svn://myrepo/svn/trunk
SVN Updategit svn rebase
SVN Commitgit svn dcommit
![Page 35: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/35.jpg)
![Page 36: Introduccion a Git: Un Sistema de control de versiones ...bien hecho.](https://reader030.fdocuments.net/reader030/viewer/2022021500/58a1a9b21a28abf84d8c4c9c/html5/thumbnails/36.jpg)
Gracias
Contact me:
Email: [email protected]@gnu.org
Blog: http://blog.nethazard.net
Identi.ca http://identi.ca/gabrielsaldana/Twitter http://twitter.com/gabrielsaldana/