Your SlideShare is downloading. ×
0
+
Betabeers Córdoba XII

@sergiogomez
Sergio Gómez - @sergiogomez
Una vida dedicada a la sonrisa, a mis niños, y al rock and roll

● Socio fundador de QuaiP.com...
● Desarrollo e infraestructuras avanzadas de VoIP
● Servidores de streaming de radio y TV
● Cloud, hosting avanzado, VPS y...
git
+ Sistema de control de versiones distribuido, open source y gratuito
+ Creado por Linus Torvalds, para su uso en el d...
git + distribuido

Imagen: http://nvie.com/posts/a-successful-git-branching-model/

Betabeers Córdoba XII

@sergiogomez
git + licencia libre
+ GNU General Public License version 2
+ Algunas partes usan otras licencias, pero siempre compatible...
git + instalación
+ Disponible en Linux, Mac OS X, Windows y Solaris
Debian/Ubuntu
$ apt-get install git
Fedora
$ yum inst...
git + gitk (linux)

Betabeers Córdoba XII

@sergiogomez
git + gitx (mac)

Betabeers Córdoba XII

@sergiogomez
git + gitx-dev (mac)

Betabeers Córdoba XII

@sergiogomez
git + github for mac

Betabeers Córdoba XII

@sergiogomez
git + github for windows

Betabeers Córdoba XII

@sergiogomez
git + configuración
+ Necesario para identificar el trabajo que se realiza
$ git config --global user.name "Sergio Gómez"
...
git + creación de un repositorio local
+ Puede crearse un repositorio desde cero
$ mkdir some-repository
$ cd some-reposit...
git + clonar un repositorio remoto
+ Crea una copia local de un repositorio remoto para comenzar a trabajar
directamente c...
git + snapshotting
+ En git, básicamente lo que hacemos es componer y guardar snapshots
(instantáneas) de un proyecto, tra...
git + staging area
+ Git usa un proceso de dos pasos para subir tus snapshots al repositorio:
Paso 1
Paso 2

añadir ficher...
git + add
+ Es el comando con el que se añaden los cambios al staging area
$ git add README hello.rb

+ Se pueden subir to...
git + commit
+ Es el comando con el que se suben los cambios del staging al repositorio
$ git commit

+ Es necesario inclu...
git + ¿se te ha escapado un commit?

Imagen: http://www.librodearena.com/post/rompetejas/la-petra-nada-una-mas-que-cagar-j...
git + amend
+ Permite corregir (enmendar) el último commit
$ git commit --amend

Betabeers Córdoba XII

@sergiogomez
git + diff
+ Es la forma (que usan los buenos) de ver el código que ha cambiado desde
el último commit y que no ha sido su...
git + diff

Betabeers Córdoba XII

@sergiogomez
git + status
+ En todo momento podemos ver la situación de nuestra copia local:
+ Ficheros cambiados y añadidos al índice
...
git + deshacer
+ Al contrario que en la vida real, en git es realmente sencillo volver hacia
atrás, deshacer acciones, e i...
git + mover y borrar ficheros
+ Mover un fichero
$ git mv source target

+ Borrar un fichero
$ git rm -- path/to/file

+ B...
git + stash
+ Guardar los cambios sin subir al índice a una pila de cambios (stack)
$ git stash

+ Retomar los cambios y q...
git + branches
+ Crear rama
$ git branch nombre-de-rama

+ Cambiar a una rama
$ git checkout nombre-de-rama

+ Ver todas l...
git + branches
+ Borrar rama (sólo si no estás en ella)
$ git branch -d nombre-de-rama

+ Fusionar ramas (merge)
Es uno de...
git + flujo habitual

Imagen: http://blogs.endjin.com/2013/04/a-step-by-step-guide-to-using-gitflow-with-teamcity-part-3-g...
git + conflictos
+ Aparecen al intentar fusionar dos ramas que incluyan distintos cambios
sobre un mismo bloque de código
...
git + log
+ Muestra el log completo
$ git log

+ Versión resumida (una línea por commit)
$ git log --oneline

+ Versión re...
git + tags
+ Similar al commit, permite etiquetar hitos del desarrollo (versiones)
$ git tag -a v1.0 -m 'Primera versión p...
git + repositorios remotos
+ Es lo habitual a la hora de colaborar con otros programadores (github…)
+ También es útil par...
git + repositorios remotos
+ Descargar nuevas ramas y datos de un repositorio remoto sin fusionar
$ git fetch origin

+ De...
github
+ Alojamiento de repositorios Git públicos y privados
+ Red social de desarrolladores
+ Gestión colaborativa de pro...
github + crear una cuenta

Betabeers Córdoba XII

@sergiogomez
github + crear un repositorio

Betabeers Córdoba XII

@sergiogomez
github + clonar un repositorio público
$ git clone git@github.com:rails/rails.git

Betabeers Córdoba XII

@sergiogomez
github + forks de repositorios públicos
+ Podemos trabajar con un “fork” a partir del código de otros repositorios

+ Clon...
github + búsquedas

Betabeers Córdoba XII

@sergiogomez
github + red social de desarrolladores
+ Se puede navegar por todo el código de todos los repositorios públicos

Betabeers...
github + red social de desarrolladores
+ Puedes seguir a usuarios (como Twitter)
+ Puedes observar proyectos, y recibir no...
github + issues

Betabeers Córdoba XII

@sergiogomez
github + milestones

Betabeers Córdoba XII

@sergiogomez
gitolite + git en tu servidor
$ git clone git://github.com/sitaramc/gitolite
$ gitolite/install -ln
$ gitolite setup -pk y...
gitlab + ‘github’ en tu servidor

Betabeers Córdoba XII

@sergiogomez
links
+ git-scm.com + Página oficial de git
+ try.github.io + Aprende git desde el navegador
+ git-scm.com/book + Libro co...
¿¿PREGUNTAS??

Imagen: http://wallpaperpond.com/2011/04/cold-beer/

Betabeers Córdoba XII

@sergiogomez
¡¡MUCHÍSIMAS GRACIAS!!

Betabeers Córdoba XII

@sergiogomez
Upcoming SlideShare
Loading in...5
×

Git + Github - Betabeers Córdoba XII

364

Published on

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

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

  • Be the first to like this

No Downloads
Views
Total Views
364
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Git + Github - Betabeers Córdoba XII"

  1. 1. + Betabeers Córdoba XII @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… ● Coworker feliz en coSfera Betabeers Córdoba XII @sergiogomez
  3. 3. ● Desarrollo e infraestructuras avanzadas de VoIP ● Servidores de streaming de radio y TV ● Cloud, hosting avanzado, VPS y servidores dedicados Betabeers Córdoba XII @sergiogomez
  4. 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 + Rápido, sólido, estable y fácilmente conectable + Desde cero, o a partir de Subversion y CVS Betabeers Córdoba XII @sergiogomez
  5. 5. git + distribuido Imagen: http://nvie.com/posts/a-successful-git-branching-model/ Betabeers Córdoba XII @sergiogomez
  6. 6. git + licencia libre + GNU General Public License version 2 + Algunas partes usan otras licencias, pero siempre compatibles con GPLv2 Betabeers Córdoba XII @sergiogomez
  7. 7. git + instalación + 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 Betabeers Córdoba XII @sergiogomez
  8. 8. git + gitk (linux) Betabeers Córdoba XII @sergiogomez
  9. 9. git + gitx (mac) Betabeers Córdoba XII @sergiogomez
  10. 10. git + gitx-dev (mac) Betabeers Córdoba XII @sergiogomez
  11. 11. git + github for mac Betabeers Córdoba XII @sergiogomez
  12. 12. git + github for windows Betabeers Córdoba XII @sergiogomez
  13. 13. git + configuración + 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" Betabeers Córdoba XII @sergiogomez
  14. 14. git + 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 Betabeers Córdoba XII @sergiogomez
  15. 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 deb Betabeers Córdoba XII @sergiogomez
  16. 16. git + 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 Betabeers Córdoba XII @sergiogomez
  17. 17. git + staging area + Git usa un proceso de dos pasos para subir tus snapshots al repositorio: Paso 1 Paso 2 añadir ficheros y cambios al staging area git add git commit confirmar ficheros y cambios al repositorio local Imagen: http://graph1zzlle.github.io/posts/git-basics-revisited-part2/ Betabeers Córdoba XII @sergiogomez
  18. 18. git + add + Es el comando con el que se añaden los cambios al staging area $ git add README hello.rb + Se pueden subir todos los ficheros directamente $ git add . Betabeers Córdoba XII @sergiogomez
  19. 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' + Añadir automáticamente todos los cambios en los ficheros del staging area $ git commit -a -m 'Cambios realizados' Betabeers Córdoba XII @sergiogomez
  20. 20. git + ¿se te ha escapado un commit? Imagen: http://www.librodearena.com/post/rompetejas/la-petra-nada-una-mas-que-cagar-juntitos/4384204/311860 Betabeers Córdoba XII @sergiogomez
  21. 21. git + amend + Permite corregir (enmendar) el último commit $ git commit --amend Betabeers Córdoba XII @sergiogomez
  22. 22. git + diff + 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 Betabeers Córdoba XII @sergiogomez
  23. 23. git + diff Betabeers Córdoba XII @sergiogomez
  24. 24. 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 Betabeers Córdoba XII $ # # # # # # # # # # # # # # # 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
  25. 25. git + 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^ Betabeers Córdoba XII @sergiogomez
  26. 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/dir Betabeers Córdoba XII @sergiogomez
  27. 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 Córdoba XII @sergiogomez
  28. 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-rama Betabeers Córdoba XII @sergiogomez
  29. 29. git + branches + 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 Betabeers Córdoba XII @sergiogomez
  30. 30. git + flujo habitual Imagen: http://blogs.endjin.com/2013/04/a-step-by-step-guide-to-using-gitflow-with-teamcity-part-3-gitflow-commands/ Betabeers Córdoba XII @sergiogomez
  31. 31. git + 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 Betabeers Córdoba XII @sergiogomez
  32. 32. git + 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 Betabeers Córdoba XII @sergiogomez
  33. 33. git + tags + 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' Betabeers Córdoba XII @sergiogomez
  34. 34. git + repositorios remotos + Es lo habitual a la hora de colaborar con otros programadores (github…) + 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 $ $ $ $ $ git git git git git remote remote remote remote remote Betabeers Córdoba XII add github git@github.com:git/git.git rm github rename github origin set-url origin git://github.com/git/git.git @sergiogomez
  35. 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: Sólo podrá realizarse tras haber descargado todos los cambios pendientes $ git push origin master Betabeers Córdoba XII @sergiogomez
  36. 36. github + Alojamiento de repositorios Git públicos y privados + Red social de desarrolladores + Gestión colaborativa de proyectos de código + Hosting de proyectos Betabeers Córdoba XII @sergiogomez
  37. 37. github + crear una cuenta Betabeers Córdoba XII @sergiogomez
  38. 38. github + crear un repositorio Betabeers Córdoba XII @sergiogomez
  39. 39. github + clonar un repositorio público $ git clone git@github.com:rails/rails.git Betabeers Córdoba XII @sergiogomez
  40. 40. github + 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. Betabeers Córdoba XII @sergiogomez
  41. 41. github + búsquedas Betabeers Córdoba XII @sergiogomez
  42. 42. github + red social de desarrolladores + Se puede navegar por todo el código de todos los repositorios públicos Betabeers Córdoba XII @sergiogomez
  43. 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 cuáles son los proyectos más populares (watchers + stars + forks) Betabeers Córdoba XII @sergiogomez
  44. 44. github + issues Betabeers Córdoba XII @sergiogomez
  45. 45. github + milestones Betabeers Córdoba XII @sergiogomez
  46. 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 bar repo @projects baz RW+ master RW R = = = = @staff ashok ashok wally config hooks.emailprefix = '[%GL_REPO] ' Betabeers Córdoba XII @sergiogomez
  47. 47. gitlab + ‘github’ en tu servidor Betabeers Córdoba XII @sergiogomez
  48. 48. 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 + nvie.com/posts/a-successful-git-branching-model + Flujo de trabajo + 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 + gitolite.com + Gitolite + gitlab.org + Gitlab Betabeers Córdoba XII @sergiogomez
  49. 49. ¿¿PREGUNTAS?? Imagen: http://wallpaperpond.com/2011/04/cold-beer/ Betabeers Córdoba XII @sergiogomez
  50. 50. ¡¡MUCHÍSIMAS GRACIAS!! Betabeers Córdoba XII @sergiogomez
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×