Git + Github - Sysmana 2014

939 views

Published on

Presentación de Git y Github en la Sysmana 2014, por Sergio Gómez

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
939
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
38
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Git + Github - Sysmana 2014

  1. 1. + Sysmana 2014 @sergiogomez
  2. 2. Sergio Gómez - @sergiogomez “Una vida dedicada a la sonrisa, a mis niños, y al rock and roll” ● Socio fundador de QuaiP.com ● Web Developer Ruby on Rails / HTML / CSS / jQuery ● SysOp LAMP, git… Sysmana 2014 @sergiogomez
  3. 3. ● Desarrollo e infraestructuras avanzadas de VoIP ● Servidores de streaming de radio y TV ● Web Hosting Avanzado, VPS y Servidores Dedicados Sysmana 2014 @sergiogomez
  4. 4. git + Sistema de control de versiones distribuido gratuito y open source + Creado por Linus Torvalds, para su uso en el desarrollo del kernel de Linux + Rápido, sólido, estable y fácilmente conectable + Desde cero, o a partir de Subversion y CVS Sysmana 2014 @sergiogomez
  5. 5. licencia + GNU General Public License version 2 + Algunas partes usan otras licencias, pero siempre compatibles con GPLv2 Sysmana 2014 @sergiogomez
  6. 6. instalación de git + 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/git Sysmana 2014 @sergiogomez
  7. 7. interfaces gráficas: gitk (linux) Sysmana 2014 @sergiogomez
  8. 8. interfaces gráficas: gitx (mac) Sysmana 2014 @sergiogomez
  9. 9. interfaces gráficas: gitx-dev (mac) Sysmana 2014 @sergiogomez
  10. 10. interfaces gráficas: github for mac Sysmana 2014 @sergiogomez
  11. 11. interfaces gráficas: github for windows Sysmana 2014 @sergiogomez
  12. 12. configuración de git + Necesario para identificar el trabajo que se realiza $ git config --global user.name "Sergio Gómez" $ git config --global user.email "sergio@quaip.com" + Puede ser distinto en cada repositorio $ cd repositorio $ git config user.name "Sergio Gómez" $ git config user.email "sergiogomez@gmail.com" Sysmana 2014 @sergiogomez
  13. 13. creación de un repositorio local + Puede crearse un repositorio desde cero $ mkdir some-repository $ cd some-repository $ git init + O crearse desde una carpeta con código $ cd project $ git init Sysmana 2014 @sergiogomez
  14. 14. 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 deb Sysmana 2014 @sergiogomez
  15. 15. snapshotting + En git, básicamente lo que hacemos es componer y guardar snapshots (instantáneas) de un proyecto, trabajar con ellas y compararlas Imagen: http://slid.es/gruizdevilla/introduccion-a-git Sysmana 2014 @sergiogomez
  16. 16. staging area (el índice) + Git usa un proceso de dos pasos para subir tus snapshots al repositorio: Paso 1 Paso 2 local git add git commit añadir ficheros y cambios al índice confirmar ficheros y cambios al repositorio Imagen: http://graph1zzlle.github.io/posts/git-basics-revisited-part2/ Sysmana 2014 @sergiogomez
  17. 17. add + Es el comando con el que se añaden los cambios al índice $ git add README hello.rb + Se pueden subir todos los ficheros directamente $ git add . Sysmana 2014 @sergiogomez
  18. 18. commit + Es el comando con el que se suben los cambios del índice al repositorio $ git commit + Es necesario incluir un mensaje que describa lo que se ha hecho $ git commit -m 'Cambios realizados' + Añadir automáticamente todos los cambios en los ficheros del índice $ git commit -a -m 'Cambios realizados' Sysmana 2014 @sergiogomez
  19. 19. diferencias + Es la forma (que usan los buenos) de ver el código 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" end end Sysmana 2014 @sergiogomez
  20. 20. git status + En todo momento podemos ver la situación de nuestra copia local: + Ficheros cambiados y añadidos al índice listos para el siguiente commit + Ficheros cambiados pero que no están añadidos al índice + Ficheros sin registrar por el índice + Rama en la que estás trabajando + Número de commits que aún no están en el repositorio remoto Sysmana 2014 $ # # # # # # # # # # # # # # # git status On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: new file: README hello.rb Changed but (use "git (use "git modified: not updated: add <file>..." to update what will be... checkout -- <file>..." to discard chan... # README @sergiogomez
  21. 21. deshacer + Al contrario que en la vida real, en git es realmente sencillo volver hacia atrás, deshacer acciones, e incluso reescribir la historia: Quitar un fichero del índice que ha cambiado $ git reset HEAD -- path/to/file Quitar un fichero nuevo del índice $ git rm --cached path/to/file Quieres deshacer los cambios de un fichero que no está en el índice $ git checkout -- path/to/file Has hecho un commit y lo quieres deshacer $ git reset --soft HEAD^ Sysmana 2014 @sergiogomez
  22. 22. 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/dir Sysmana 2014 @sergiogomez
  23. 23. 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} Sysmana 2014 @sergiogomez
  24. 24. branches (ramas) + 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-rama Sysmana 2014 @sergiogomez
  25. 25. branches (ramas) + Borrar rama (sólo si no estás en ella) $ git branch -d nombre-de-rama + Fusionar ramas (merge) Es uno de los pasos más 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-rama Sysmana 2014 @sergiogomez
  26. 26. flujo habitual de trabajo con ramas Imagen: http://blogs.endjin.com/2013/04/a-step-by-step-guide-to-using-gitflow-with-teamcity-part-3-gitflow-commands/ Sysmana 2014 @sergiogomez
  27. 27. conflictos + Aparecen al intentar fusionar dos ramas que incluyan distintos cambios sobre un mismo bloque de código $ 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 <<<<<<< HEAD Many Hello World Examples ======= Hello World Lang Examples >>>>>>> fix_readme + No se podrá hacer commit con la fusión de las ramas hasta que se resuelvan todos los conflictos Sysmana 2014 @sergiogomez
  28. 28. log + Muestra el log completo $ git log + Versión resumida (una línea por commit) $ git log --oneline + Versión resumida en modo de grafo $ git log --oneline --graph Sysmana 2014 @sergiogomez
  29. 29. tags (etiquetas) + Similar al commit, permite etiquetar hitos del desarrollo (versiones) $ git tag -a v1.0 -m 'Primera versión pública' + Puede realizarse sobre commits anteriores $ git tag -a v0.9 15b56f1 -m 'Primera beta interna' Sysmana 2014 @sergiogomez
  30. 30. repositorios remotos + Es lo habitual a la hora de colaborar con otros programadores + También es útil para mantener copias remotas del código + Pueden gestionarse en cualquier momento + Un repositorio local puede conectarse con distintos repositorios remotos + Opciones para listar, añadir, eliminar, renombre y especificar URL $ $ $ $ $ Sysmana 2014 git git git git git remote remote remote remote remote add github git@github.com:git/git.git rm github rename github origin set-url origin git://github.com/git/git.git @sergiogomez
  31. 31. 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: Sólo podrá realizarse tras haber descargado todos los cambios pendientes $ git push origin master Sysmana 2014 @sergiogomez
  32. 32. github + Alojamiento de repositorios Git públicos y privados + Red social de desarrolladores + Gestión colaborativa de proyectos de código + Hosting de proyectos Sysmana 2014 @sergiogomez
  33. 33. crear una cuenta Sysmana 2014 @sergiogomez
  34. 34. crear un repositorio Sysmana 2014 @sergiogomez
  35. 35. clonar un repositorio público $ git clone git@github.com:rails/rails.git Sysmana 2014 @sergiogomez
  36. 36. forks de repositorios públicos + Podemos trabajar con un “fork” a partir del código 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 añada nuestros cambios. Debemos explicar lo que hemos hecho y cómo se ha hecho (convencerlo), y él decidirá si los incluye y si hay que hacer más cambios. Sysmana 2014 @sergiogomez
  37. 37. búsquedas Sysmana 2014 @sergiogomez
  38. 38. red social de desarrolladores + Se puede navegar por todo el código de todos los repositorios públicos Sysmana 2014 @sergiogomez
  39. 39. 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 cuáles son los proyectos más populares (watchers + stars + forks) Sysmana 2014 @sergiogomez
  40. 40. issues Sysmana 2014 @sergiogomez
  41. 41. milestones Sysmana 2014 @sergiogomez
  42. 42. links + git-scm.com + Página 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 + guides.github.com + Guías 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 Sysmana 2014 @sergiogomez
  43. 43. ¡¡Muchas gracias!! a Diego Castillo @dcastillobarnes David Muñoz @dperilla José Ramón Albendín @jralbendin y por supuesto A TODOS VOSOTROS Sysmana 2014 @sergiogomez

×