git + github - betabeers córdoba xii

50
Betabeers Córdoba XII @sergiogomez +

Upload: quaip

Post on 19-Jun-2015

389 views

Category:

Technology


0 download

DESCRIPTION

Presentación de Git y Github en la XII Betabeers de Córdoba, por Sergio Gómez

TRANSCRIPT

  • 1. + Betabeers Crdoba XII@sergiogomez

2. Sergio Gmez - @sergiogomez Una vida dedicada a la sonrisa, a mis nios, y al rock and roll Socio fundador de QuaiP.com Web Developer Ruby on Rails / HTML / CSS / jQuery SysOp LAMP, git Coworker feliz en coSfera Betabeers Crdoba XII@sergiogomez 3. Desarrollo e infraestructuras avanzadas de VoIP Servidores de streaming de radio y TV Cloud, hosting avanzado, VPS y servidores dedicadosBetabeers Crdoba XII@sergiogomez 4. git + Sistema de control de versiones distribuido, open source y gratuito + Creado por Linus Torvalds, para su uso en el desarrollo del kernel de Linux + Rpido, slido, estable y fcilmente conectable + Desde cero, o a partir de Subversion y CVSBetabeers Crdoba XII@sergiogomez 5. git + distribuidoImagen: http://nvie.com/posts/a-successful-git-branching-model/Betabeers Crdoba XII@sergiogomez 6. git + licencia libre + GNU General Public License version 2 + Algunas partes usan otras licencias, pero siempre compatibles con GPLv2Betabeers Crdoba XII@sergiogomez 7. git + instalacin + Disponible en Linux, Mac OS X, Windows y Solaris Debian/Ubuntu $ apt-get install git Fedora $ yum install git Gentoo $ emerge --ask --verbose dev-vcs/gitBetabeers Crdoba XII@sergiogomez 8. git + gitk (linux)Betabeers Crdoba XII@sergiogomez 9. git + gitx (mac)Betabeers Crdoba XII@sergiogomez 10. git + gitx-dev (mac)Betabeers Crdoba XII@sergiogomez 11. git + github for macBetabeers Crdoba XII@sergiogomez 12. git + github for windowsBetabeers Crdoba XII@sergiogomez 13. git + configuracin + Necesario para identificar el trabajo que se realiza $ git config --global user.name "Sergio Gmez" $ git config --global user.email "[email protected]"+ Puede ser distinto en cada repositorio $ cd repositorio $ git config user.name "Sergio Gmez" $ git config user.email "[email protected]"Betabeers Crdoba XII@sergiogomez 14. git + creacin de un repositorio local + Puede crearse un repositorio desde cero $ mkdir some-repository $ cd some-repository $ git init+ O crearse desde una carpeta con cdigo $ cd project $ git initBetabeers Crdoba XII@sergiogomez 15. git + clonar un repositorio remoto + Crea una copia local de un repositorio remoto para comenzar a trabajar directamente con l $ git clone https://github.com/drone/drone.git Cloning into 'drone'... remote: Counting objects: 590, done. remote: Compressing objects: 100% (339/339), done. remote: Total 590 (delta 265), reused 519 (delta 227) Receiving objects: 100% (590/590), 176.08 KiB | 205.00 KiB/s, done. Resolving deltas: 100% (265/265), done. Checking connectivity... done $ cd drone/ $ ls AUTHORS LICENSE Makefile README.md bin cmd debBetabeers Crdoba XII@sergiogomez 16. git + snapshotting + En git, bsicamente lo que hacemos es componer y guardar snapshots (instantneas) de un proyecto, trabajar con ellas y compararlasImagen: http://slid.es/gruizdevilla/introduccion-a-gitBetabeers Crdoba XII@sergiogomez 17. git + staging area + Git usa un proceso de dos pasos para subir tus snapshots al repositorio: Paso 1 Paso 2aadir ficheros y cambios al staging area git add git commit confirmar ficheros y cambios al repositorio localImagen: http://graph1zzlle.github.io/posts/git-basics-revisited-part2/Betabeers Crdoba XII@sergiogomez 18. git + add + Es el comando con el que se aaden los cambios al staging area $ git add README hello.rb+ Se pueden subir todos los ficheros directamente $ git add .Betabeers Crdoba XII@sergiogomez 19. git + commit + Es el comando con el que se suben los cambios del staging al repositorio $ git commit+ Es necesario incluir un mensaje que describa lo que se ha hecho $ git commit -m 'Cambios realizados'+ Aadir automticamente todos los cambios en los ficheros del staging area $ git commit -a -m 'Cambios realizados'Betabeers Crdoba XII@sergiogomez 20. git + se te ha escapado un commit?Imagen: http://www.librodearena.com/post/rompetejas/la-petra-nada-una-mas-que-cagar-juntitos/4384204/311860Betabeers Crdoba XII@sergiogomez 21. git + amend + Permite corregir (enmendar) el ltimo commit $ git commit --amendBetabeers Crdoba XII@sergiogomez 22. git + diff + Es la forma (que usan los buenos) de ver el cdigo que ha cambiado desde el ltimo commit y que no ha sido subido al ndice: $ diff --git a/hello.rb b/hello.rb index d62ac43..8d15d50 100644 --- a/hello.rb +++ b/hello.rb @@ -1,7 +1,7 @@ class HelloWorld+def self.hello puts "hello world" puts "hola mundo" endendBetabeers Crdoba XII@sergiogomez 23. git + diffBetabeers Crdoba XII@sergiogomez 24. git + status + En todo momento podemos ver la situacin de nuestra copia local: + Ficheros cambiados y aadidos al ndice listos para el siguiente commit + Ficheros cambiados pero que no estn aadidos al ndice + Ficheros sin registrar por el ndice + Rama en la que ests trabajando + Nmero de commits que an no estn en el repositorio remotoBetabeers Crdoba XII$ # # # # # # # # # # # # # # #git status On branch master Initial commit Changes to be committed: (use "git rm --cached ..." to unstage) new file: new file:README hello.rbChanged but (use "git (use "git modified:not updated: add ..." to update what will be... checkout -- ..." to discard chan... # README@sergiogomez 25. git + deshacer + Al contrario que en la vida real, en git es realmente sencillo volver hacia atrs, deshacer acciones, e incluso reescribir la historia: Quitar un fichero del ndice que ha cambiado $ git reset HEAD -- path/to/fileQuitar un fichero nuevo del ndice $ git rm --cached path/to/fileQuieres deshacer los cambios de un fichero que no est en el ndice $ git checkout -- path/to/fileHas hecho un commit y lo quieres deshacer $ git reset --soft HEAD^Betabeers Crdoba XII@sergiogomez 26. git + mover y borrar ficheros + Mover un fichero $ git mv source target+ Borrar un fichero $ git rm -- path/to/file+ Borrar una carpeta $ git rn .r .. path/to/dirBetabeers Crdoba XII@sergiogomez 27. git + stash + Guardar los cambios sin subir al ndice a una pila de cambios (stack) $ git stash+ Retomar los cambios y quitarlos de la pila $ git stash pop=$ git stash apply; git stash drop+ Ver pila de cambios $ git stash list+ Aplicar un cambio concreto de la pila $ git stash apply stash@{1}Betabeers Crdoba XII@sergiogomez 28. git + branches + Crear rama $ git branch nombre-de-rama+ Cambiar a una rama $ git checkout nombre-de-rama+ Ver todas las ramas $ git branch+ Crear y cambiar a una rama (en un solo paso) $ git checkout -b nombre-de-ramaBetabeers Crdoba XII@sergiogomez 29. git + branches + Borrar rama (slo si no ests en ella) $ git branch -d nombre-de-rama+ Fusionar ramas (merge) Es uno de los pasos ms importantes, y se usa para incorporar los cambios realizados en una rama a otra rama (por ejemplo, de la rama nombre-de-rama a la rama master) $ git checkout master $ git merge nombre-de-ramaBetabeers Crdoba XII@sergiogomez 30. git + flujo habitualImagen: http://blogs.endjin.com/2013/04/a-step-by-step-guide-to-using-gitflow-with-teamcity-part-3-gitflow-commands/Betabeers Crdoba XII@sergiogomez 31. git + conflictos + Aparecen al intentar fusionar dos ramas que incluyan distintos cambios sobre un mismo bloque de cdigo $ git merge nombre-de-rama Auto-merging README CONFLICT (content): Merge conflict in README Automatic merge failed; fix conflicts and then commit the result. $ cat README > fix_readme+ No se podr hacer commit con la fusin de las ramas hasta que se resuelvan todos los conflictos Betabeers Crdoba XII@sergiogomez 32. git + log + Muestra el log completo $ git log+ Versin resumida (una lnea por commit) $ git log --oneline+ Versin resumida en modo de grafo $ git log --oneline --graphBetabeers Crdoba XII@sergiogomez 33. git + tags + Similar al commit, permite etiquetar hitos del desarrollo (versiones) $ git tag -a v1.0 -m 'Primera versin pblica'+ Puede realizarse sobre commits anteriores $ git tag -a v0.9 15b56f1 -m 'Primera beta interna'Betabeers Crdoba XII@sergiogomez 34. git + repositorios remotos + Es lo habitual a la hora de colaborar con otros programadores (github) + Tambin es til para mantener copias remotas del cdigo + Pueden gestionarse en cualquier momento + Un repositorio local puede conectarse con distintos repositorios remotos + Opciones para listar, aadir, eliminar, renombre y especificar URL $ $ $ $ $git git git git gitremote remote remote remote remoteBetabeers Crdoba XIIadd github [email protected]:git/git.git rm github rename github origin set-url origin git://github.com/git/git.git@sergiogomez 35. git + repositorios remotos + Descargar nuevas ramas y datos de un repositorio remoto sin fusionar $ git fetch origin+ Descargar nuevas ramas y datos de un repositorio remoto y fusionar $ git pull origin+ Subir rama y sus datos a un repositorio remoto IMPORTANTE: Slo podr realizarse tras haber descargado todos los cambios pendientes $ git push origin masterBetabeers Crdoba XII@sergiogomez 36. github + Alojamiento de repositorios Git pblicos y privados + Red social de desarrolladores + Gestin colaborativa de proyectos de cdigo + Hosting de proyectosBetabeers Crdoba XII@sergiogomez 37. github + crear una cuentaBetabeers Crdoba XII@sergiogomez 38. github + crear un repositorioBetabeers Crdoba XII@sergiogomez 39. github + clonar un repositorio pblico $ git clone [email protected]:rails/rails.gitBetabeers Crdoba XII@sergiogomez 40. github + forks de repositorios pblicos + Podemos trabajar con un fork a partir del cdigo de otros repositorios+ Clonamos nuestro fork en nuestro equipo + Trabajamos con nuestra copia local (repositorio git) + Hacemos un pull request si queremos que el usuario original aada nuestros cambios. Debemos explicar lo que hemos hecho y cmo se ha hecho (convencerlo), y l decidir si los incluye y si hay que hacer ms cambios.Betabeers Crdoba XII@sergiogomez 41. github + bsquedasBetabeers Crdoba XII@sergiogomez 42. github + red social de desarrolladores + Se puede navegar por todo el cdigo de todos los repositorios pblicosBetabeers Crdoba XII@sergiogomez 43. github + red social de desarrolladores + Puedes seguir a usuarios (como Twitter) + Puedes observar proyectos, y recibir notificaciones cuando stos tienen cambios + Puedes marcar proyectos como favoritos, lo que te permite conocer cules son los proyectos ms populares (watchers + stars + forks)Betabeers Crdoba XII@sergiogomez 44. github + issuesBetabeers Crdoba XII@sergiogomez 45. github + milestonesBetabeers Crdoba XII@sergiogomez 46. gitolite + git en tu servidor $ git clone git://github.com/sitaramc/gitolite $ gitolite/install -ln $ gitolite setup -pk your-name.pub@staff @projects= =dilbert alice foo barrepo @projects baz RW+ master RW R= = = =@staff ashok ashok wallyconfig hooks.emailprefix = '[%GL_REPO] 'Betabeers Crdoba XII@sergiogomez 47. gitlab + github en tu servidorBetabeers Crdoba XII@sergiogomez 48. links + git-scm.com + Pgina oficial de git + try.github.io + Aprende git desde el navegador + git-scm.com/book + Libro completo sobre git (licencia Creative Commons) + www.codeschool.com/courses/try-git + Curso online gratuito de git + gitref.org + Referencia de git + nvie.com/posts/a-successful-git-branching-model + Flujo de trabajo + guides.github.com + Guas de uso de github + git-scm.com/docs/gitk + Manual de Gitk + gitx.frim.nl + GitX + rowanj.github.io/gitx + GitX-dev + mac.github.com + GitHub Mac + windows.github.com + GitHub Windows + gitolite.com + Gitolite + gitlab.org + Gitlab Betabeers Crdoba XII@sergiogomez 49. PREGUNTAS??Imagen: http://wallpaperpond.com/2011/04/cold-beer/Betabeers Crdoba XII@sergiogomez 50. MUCHSIMAS GRACIAS!!Betabeers Crdoba XII@sergiogomez